Vea este vídeo para obtener una visión detallada del proceso de integración. Le recomendamos que utilice tanto el vídeo como la guía escrita que figura a continuación.
Antes de empezar: Requisitos previos del SDK
El SDK de Singular está disponible como complemento para Flutter. Las siguientes instrucciones le muestran cómo integrar Singular en su aplicación Flutter.
- En este artículo se presupone que dispone de una aplicación Flutter funcional.
- Para inicializar el SDK, necesitas la clave y el secreto del SDK de Singular. Puedes obtenerlas en la plataforma Singular en"Developer Tools > SDK Integration > SDK Keys".
Integrar el SDK
Para añadir el plugin de Singular a tu aplicación Flutter, añade las siguientes líneas a tu archivo pubspec.yaml:
dependencies:
singular_flutter_sdk: ^1.6.2
A continuación, navega hasta tu proyecto en el terminal y ejecuta lo siguiente:
flutter packages get
Pasos adicionales para Android
Añadir dependencias
Para las aplicaciones de Android, es necesario añadir la biblioteca Singular a la lista de dependencias en app/build.gradle, como se indica a continuación:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
//...
}
Singular SDK requiere Google Mobile Ads API, que forma parte de Google Play Services APIs 17.0.0+. Si ya has integrado Google Play Services en tu aplicación, el requisito se cumple. Si no lo has hecho, puedes integrar Google Mobile Ads de forma individual incluyendo la siguiente dependencia en el archivo build.gradle de tu aplicación:
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
Si has desactivado las dependencias transitivas para Singular SDK, añade lo siguiente al build.gradle de tu aplicación.
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.2'
Además, añada lo siguiente para admitir la referencia de instalación de Samsung Galaxy Store si su aplicación se distribuye a través de Samsung Galaxy Store:
implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0'
Nota: Si aparece un error DuplicateClasses en el momento de la compilación, es posible que ya disponga de Google play-services y puede comentar la dependencia.
Añadir permisos
Añade estos permisos bajo la etiqueta <manifest> en tu archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
Además, añade lo siguiente para admitir el referente de instalación de Samsung Galaxy Store si tu aplicación se distribuye a través de Samsung Galaxy Store y está orientada a Android 11 o superior:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Si la compilación de tu aplicación está orientada a Android 12/API nivel 31 o superior, añade permisos para acceder al ID de publicidad de Google:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
Nota: no añadas este permiso si estás integrando el SDK para niños.
Pasos adicionales para iOS
Para utilizar el plugin de Singular, tiene que añadir el framework AdServices.
Inicialización del SDK de Singular
El código de inicialización de Singular SDK debe invocarse cada vez que se abre la aplicación. Es un requisito previo para toda la funcionalidad de atribución de Singular, y también envía una nueva sesión de usuario a Singular (las sesiones se utilizan para calcular la retención de usuarios).
El código de inicialización va en el widget principal de la aplicación (es decir, main.dart), el primero que se carga al abrir la aplicación. Este widget tiene que ser stateful, y el código tiene que ser añadido en el método initState() del widget.
- En primer lugar, debe crear un objeto SingularConfig. El objeto contiene la clave y el secreto de Singular SDK.
- Opcionalmente, puede añadir opciones para activar varias funciones del SDK. Consulte la lista completa de opciones.
- Instalación de META Soporte de atribución de referencia
Configuración SDK necesaria para habilitar la atribución "Meta Install Referrer":
- Proporcione su Id. de aplicación de Facebook en el objeto de configuración singular.
// To enable META Install Referrer config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
- Proporcione su Id. de aplicación de Facebook en el objeto de configuración singular.
Ejemplo:
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
//...
class MyHomePage extends StatefulWidget {
//...
}
class _MyHomePageState extends State<MyHomePage> {
//...
@override
void initState() {
super.initState();
//...
SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
// Set hashed User ID if available
config.customUserId = "b642b4217b34b1e8d3bd915fc65c4452";
// For iOS (Remove this if you are not displaying an ATT prompt)!
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
// To enable SkAdNetwork Support
config.skAdNetworkEnabled = true;
// To enable META Install Referrer
config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
// (optional) Using Singular Global Properties feature to capture
// third party identifiers. The respective SDK(s) must be initialized
// before the Singular SDK. Example of passing the CleverTapID.
// var cleverTapId = CleverTapPlugin.getCleverTapID();
// config.withGlobalProperty("CLEVERTAPID", cleverTapId, true);
Singular.start(config);
}
Gestión del consentimiento ATT (establecimiento de un retardo de inicialización)
Visualización de un aviso ATT (App Tracking Transparency)
A partir de iOS 14.5, las aplicaciones están obligadas a solicitar el consentimiento del usuario (mediante el marco App Tracking Transparency) antes de poder acceder y compartir algunos datos del usuario útiles para fines de seguimiento, incluido el IDFA del dispositivo.
Singular se beneficia enormemente de tener el IDFA para identificar dispositivos y realizar la atribución de instalaciones (aunque hay formas de realizar la atribución sin el IDFA). Le recomendamos encarecidamente que solicite el consentimiento del usuario para obtener el IDFA.
Retrasar la inicialización para esperar la respuesta de la ATT
Por defecto, Singular SDK envía una sesión de usuario cuando se inicializa. Cuando se envía una sesión desde un nuevo dispositivo, se activa inmediatamente el proceso de atribución de Singular, que se realiza basándose únicamente en los datos de que dispone Singular en ese momento. Por lo tanto, es esencial solicitar el consentimiento y recuperar el IDFA antes de que el SDK de Singular envíe la primera sesión.
Para retrasar el lanzamiento de una sesión de usuario, inicialice Singular SDK con la opción waitForTrackingAuthorizationWithTimeoutInterval en el objeto Config. Esta opción ya está incluida en el ejemplo de código anterior.
Si utiliza Flutter, tendrá que recurrir a un paquete de terceros para implementar la transparencia del seguimiento de aplicaciones. Por ejemplo: el plugin app_tracking_transparency para su Flutter.
Consejo: Cuando se establece un retardo de inicialización, el flujo de la aplicación es el siguiente:
- Cuando se abre la aplicación, el SDK de Singular empieza a grabar una sesión y los eventos del usuario, pero aún no los envía al servidor de Singular.
- Cuando se concede/deniega el consentimiento de App Tracking Transparency, o transcurre el tiempo establecido, el SDK envía la sesión y cualquier evento en cola al servidor de Singular (con o sin el IDFA).
- Singular inicia entonces el proceso de atribución, aprovechando el IDFA si está disponible.
La siguiente tabla resume los posibles escenarios utilizando esta integración:
Escenario | Disponibilidad de IDFA |
El usuario ve el diálogo de consentimiento y otorga su consentimiento antes de que transcurra el tiempo establecido. | El IDFA está disponible |
El usuario ve el diálogo de consentimiento y lo deniega antes de que transcurra el tiempo establecido. | IDFA no está disponible |
El tiempo establecido expira, entonces el usuario ve el diálogo de consentimiento y otorga su consentimiento. | IDFA está disponible sólo para los eventos de usuario que se reportan después de que se otorga el consentimiento |
El tiempo establecido expira, entonces al usuario se le muestra el diálogo de consentimiento y niega el consentimiento. | IDFA no está disponible |
Al usuario se le muestra el diálogo de consentimiento, sale de la aplicación sin realizar ninguna acción, y más tarde abre la aplicación y otorga el consentimiento después de que el tiempo establecido haya expirado. | Los eventos en cola se envían al servidor Singular cuando se vuelve a abrir la aplicación. El IDFA no está disponible para estos eventos. Cualquier evento registrado después de que se haya concedido el consentimiento tiene IDFA asociado. |
Al usuario se le muestra el diálogo de consentimiento, sale de la aplicación sin realizar ninguna acción, y más tarde abre la aplicación y deniega el consentimiento. | Los eventos en cola se envían a los servidores de Singular cuando se vuelve a abrir la aplicación. El IDFA no está disponible para estos eventos o cualquiera de los eventos rastreados después. |
Añadir soporte SKAdNetwork
Para activar el seguimiento de SKAdNetwork para su aplicación, active la opción de configuración skAdNetworkEnabled antes de inicializar Singular.
Modo gestionado (recomendado)
En el modo gestionado, Singular gestiona el valor de conversión de SKAdNetwork por usted automáticamente, basándose en un modelo de conversión de su elección que puede configurar en la plataforma Singular.
Para obtener más información, consulte Comprender la gestión del valor de conversión de Singular y las Preguntas frecuentes sobre la configuración del modelo de SKAdNetwork. Para obtener una guía paso a paso sobre el uso de SKAdNetwork con Singular, consulte Cómo empezar con SKAdNetwork.
Nota: El modo SKAN Managed ya está activado en el fragmento de código de inicialización anterior. Asegúrese de que estos elementos de configuración están activados.
Para habilitar SKAdNetwork en modo gestionado, utilice el siguiente código:
SingularConfig config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
config.skAdNetworkEnabled = true;
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
Singular.init(config);
Modo manual
Si ya dispone de su propia estrategia y herramientas para gestionar el valor de conversión de SKAdNetwork, puede habilitar SKAdNetwork en modo manual.
SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
config.skAdNetworkEnabled = true;
config.manualSkanConversionManagement = true;
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
Singular.init(config);
A continuación, para actualizar el valor de conversión, utilice el siguiente código:
ingular.skanUpdateConversionValue(conversionValue)
Para saber cuándo cambia el valor de conversión, utilice la siguiente función de devolución de llamada:
config.conversionValueUpdatedCallback = (int conversionValue) {
print('Received conversionValueUpdatedCallback: ' + conversionValue.toString());
};
Para recuperar el valor de conversión actual, utilice el siguiente código:
Singular.skanGetConversionValue().then((conversionValue) {
print('conversion value: ' + conversionValue.toString());
});