El SDK de Singular está disponible como complemento para Flutter. Las siguientes instrucciones le muestran cómo integrar Singular en su aplicación Flutter.
Requisitos previos
- En este artículo se da por sentado 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".
Novedad: Guía en vídeo
Vea este vídeo para una visión detallada del proceso de integración. Recomendamos utilizar tanto el vídeo como la guía escrita que aparece a continuación.
Integración del plugin de Singular
Para añadir el plugin Singular a tu aplicación Flutter, añade las siguientes líneas a tu archivo pubspec.yaml:
dependencies:
singular_flutter_sdk: ^1.4.1
A continuación, vaya a su proyecto en el terminal y ejecute 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 todas las funciones 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 conceda 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 ni para ninguno de los eventos rastreados posteriormente. |
Envío del ID de usuario a Singular (opcional)
Puede enviar su ID de usuario interno a Singular utilizando un método del SDK de Singular.
Nota: Si utiliza la solución multidispositivo de Singular, debe recopilar el ID de usuario en todas las plataformas.
- El ID de usuario puede ser cualquier identificador y no debe exponer PII (Personally Identifiable Information). Por ejemplo, no debe utilizar la dirección de correo electrónico, el nombre de usuario o el número de teléfono del usuario. Singular recomienda utilizar un valor hash único sólo para sus datos de origen.
- El valor de ID de usuario que se pasa a Singular también debe ser el mismo ID de usuario interno que se captura en todas las plataformas (Web/Móvil/PC/Consola/Offline).
- Singular incluirá el ID de usuario en las exportaciones a nivel de usuario, ETL y devoluciones internas de BI (si está configurado). El ID de usuario es un dato de origen y Singular no lo comparte con terceros.
- El valor del ID de usuario, cuando se establece con el método Singular SDK, persistirá hasta que se desactive utilizando el método unsetCustomUserId o hasta que se desinstale la aplicación. Cerrar o reiniciar la aplicación no anula el ID de usuario.
Para establecer el ID de usuario, utilice el método setCustomUserId. Para desactivarlo (por ejemplo, si el usuario "cierra sesión" en la cuenta), llame a unsetCustomUserId.
Nota: Si varios usuarios utilizan un único dispositivo, recomendamos implementar un flujo de cierre de sesión para establecer y desestablecer el ID de usuario para cada inicio y cierre de sesión.
Si ya conoce el ID de usuario cuando se abre la aplicación, llame a setCustomUserId antes de inicializar Singular SDK. De esta forma, Singular puede tener el ID de usuario desde la primera sesión. Sin embargo, el ID de usuario no suele estar disponible hasta que el usuario se registra o realiza un inicio de sesión. En ese caso, llame a setCustomUserId una vez finalizado el flujo de registro.
Método Singular.setCustomUserID | |
---|---|
Descripción | Envía el ID de usuario a Singular. |
Firma | static void setCustomUserId(String customUserId) |
Ejemplo de uso |
|
Método Singular.unsetCustomUserID | |
Descripción | Anula el ID de usuario que se ha enviado a Singular. |
Firma | static void unsetCustomUserId() |
Ejemplo de uso |
|
Importante: Esta función Enterprise avanzada sólo está disponible en casos excepcionales. Por favor, consulte con uno de los Ingenieros de Soluciones de Singular antes de implementarla.
Singular puede recibir datos adicionales de seguimiento de eventos móviles a través de una integración de servidor a servidor. Para utilizar esta función, debe asignar el ID de usuario al identificador de seguimiento de dispositivos móviles de Singular.
Nota: Llame a este método tan pronto como sea posible después de inicializar el SDK de Singular o una vez que tenga el ID de usuario.
Método Singular.setDeviceCustomUserId | |
---|---|
Descripción | Establece el Id. de usuario personalizado igual que el inicio de sesión y lo asigna al identificador de seguimiento de Singular. |
Firma | static void setDeviceCustomUserId(String customUserId) |
Ejemplo de uso |
|
Implementación de enlaces profundos
Los enlaces profundos son enlaces que abren la aplicación en el teléfono del usuario y lo envían directamente a una página o experiencia de usuario específica, en lugar de limitarse al widget principal de la aplicación. Los enlaces profundos se utilizan normalmente en campañas de retargeting, dirigidas a usuarios que ya tienen la aplicación en su teléfono pero que puede que no hayan interactuado con ella durante un tiempo. Singular soporta enlaces profundos a través de Singular Links.
Activación de Singular Links
Para activar Singular Links en iOS y en Android, consulte Requisitos previos de Singular Links.
Para compatibilidad con Android, añada el siguiente código en el archivo MainActivity.java del proyecto:
import com.singular.flutter_sdk.SingularBridge;
import android.content.Intent;
@Override
protected void onNewIntent(@NonNull Intent intent) {
super.onNewIntent(intent);
SingularBridge.onNewIntent(intent);
}
import com.singular.flutter_sdk.SingularBridge;
import android.content.Intent;
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
SingularBridge.onNewIntent(intent);
}
Para compatibilidad con iOS, en el archivo AppDelegate.m del proyecto, añada lo siguiente:
// Top of AppDelegate.m
#import "SingularAppDelegate.h"
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
[SingularAppDelegate shared].launchOptions = launchOptions;
return [super application:application
didFinishLaunchingWithOptions:launchOptions];
}
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>>
*restorableObjects))restorationHandler {
[[SingularAppDelegate shared] continueUserActivity:userActivity
restorationHandler:restorationHandler];
return [super application:application continueUserActivity:userActivity
restorationHandler:restorationHandler ];
}
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[[SingularAppDelegate shared] handleOpenUrl:url options:options];
return [super application:app openURL:url options: options];
}
import singular_flutter_sdk
override func application(_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GeneratedPluginRegistrant.register(with: self) if
let singularAppDelegate = SingularAppDelegate.shared() {
singularAppDelegate.launchOptions = launchOptions
}
return super.application(application, didFinishLaunchingWithOptions:launchOptions)
}
override func application(_ application: UIApplication,
continue userActivity:NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?)-> Void) -> Bool {
if let singularAppDelegate = SingularAppDelegate.shared() {
singularAppDelegate.continueUserActivity(userActivity, restorationHandler:nil)
}
return super.application(application, continue:userActivity,
restorationHandler: restorationHandler);
}
override func application(_ app: UIApplication,
open url: URL, options:[UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if let singularAppDelegate = SingularAppDelegate.shared() {
singularAppDelegate.handleOpen(url, options: options)
}
return super.application(app, open: url, options: options);
}
Manejo de enlaces Singular
Utilice el mecanismo de manejo de Singular para leer los detalles del enlace de seguimiento que llevó a la apertura de la aplicación.
Por ejemplo
SingularConfig config = new SingularConfig('<SDK KEY>', '<SDK SECRET>');
config.singularLinksHandler = (SingularLinkParams params) {
String deeplink = params.deeplink;
String passthrough = params.passthrough;
bool isDeferred = params.isDeferred;
// Add your code here to handle the deep link
};
Singular.init(config);
Seguimiento de eventos (sin ingresos)
Singular puede recopilar datos sobre eventos dentro de la aplicación para ayudar a analizar el rendimiento de sus campañas y medir los KPI. Por ejemplo, es posible que su organización desee recopilar datos sobre inicios de sesión de usuarios, registros, finalización de tutoriales o subidas de nivel en una aplicación de juegos.
Singular soporta una variedad de eventos estándar. Las redes publicitarias suelen admitir estos eventos de uso común para la generación de informes y la optimización. Otra ventaja es que cuando utiliza nombres de eventos estándar, Singular los reconoce automáticamente y los añade a la lista de eventos sin que tenga que definirlos manualmente. Recomendamos utilizar eventos estándar siempre que sea posible.
La lista de eventos enviados a Singular (con los atributos que los acompañan) debe ser compilada por el equipo de UA/marketing/negocio basándose en los KPI de marketing de su organización. El equipo comercial puede seguir la guía Cómo realizar el seguimiento de los eventos In-App: Guía para clientes de Singular Attribution.
Con cada evento que rastree, puede pasar varios atributos. Consulte los atributos estándar recomendados por evento.
En su código, envíe eventos a Singular utilizando los métodos event o eventWithArgs.
Nota: Para los eventos estándar, utilice el nombre Flutter del evento tal y como aparece en la Lista de eventos y atributos estándar del SDK de Flutter, por ejemplo, sngLogin.
Para los eventos personalizados, eventos que su organización desea medir y que no coinciden con ninguno de los eventos estándar de Singular, utilice cualquier nombre personalizado (con un máximo de 32 caracteres). Recomendamos utilizar nombres en inglés para que sean compatibles con los socios de redes publicitarias que puedan recibir el evento de Singular con fines de optimización.
Ejemplo
Singular.event(Events.sngLogin);
Singular.eventWithArgs(eventName, {attributeName:attributeValue});
Map<String, Object> map = HashMap<String, Object>();
map ['name'] = 'John Doe';
map ['age'] = 30;
map ['isStudent'] = false;
Singular.eventWithArgs('event_Name', map);
Seguimiento de ingresos
Envío de eventos IAP
Para que Singular pueda hacer un seguimiento de los ingresos de su aplicación, envíe eventos IAP a Singular. Al enviar el evento IAP también permite a Singular comprobar los datos de verificación del evento y asegurarse de que no son fraudulentos.
Vea el siguiente ejemplo.
Nota: Este fragmento de código requiere el paquete Flutter IAP en https://pub.dev/packages/in_app_purchase.
import 'package:singular_flutter_sdk/singular_iap.dart';
import 'dart:io' show Platform;
if (Platform.isIOS) {
singularPurchase = new SingularIOSIAP(
product.rawPrice.toStringAsFixed(2),
product.currencyCode,
purchase.productID,
purchase.purchaseID,
purchase.verificationData.serverVerificationData
);
}
else if (Platform.isAndroid) {
singularPurchase = new SingularAndroidIAP(
product.rawPrice.toStringAsFixed(2),
product.currencyCode,
purchase.verificationData.serverVerificationData,
purchase.verificationData.localVerificationData
);
}
Singular.inAppPurchase(eventName, singularPurchase);
Nota: Pase la divisa como un código de divisa ISO 4217 de tres letras, por ejemplo, "USD", "EUR", "INR".
Método alternativo: Envío de eventos de ingresos personalizados
Singular también ofrece la opción de informar de los ingresos simplemente enviando un evento de ingresos personalizado con un nombre y un importe de ingresos. Tenga en cuenta que este método no comparte el recibo de compra con Singular y, por lo tanto, no permite a Singular verificar que se trata de un evento legítimo.
Por ejemplo:
Singular.customRevenue("MyCustomRevenue", "USD", 5.50);
Map<String, Object> map = HashMap<String, Object>();
map ['name'] = 'John Doe';
map ['age'] = 30;
map ['isStudent'] =false;
Singular.customRevenueWithAttributes('MyCustomRevenue','USD', 20, map);
Nota: Pase la moneda como un código de moneda ISO 4217 de tres letras, por ejemplo, "USD", "EUR", "INR".
Seguimiento de eventos híbrido (avanzado)
Singular recomienda enviar todos los eventos e ingresos a través del SDK de Singular integrado en su aplicación. Sin embargo, Singular puede recopilar eventos e ingresos de otras fuentes.
Cualquier evento NO enviado desde el SDK de Singular debe cumplir con los requisitos de documentación de eventos de servidor a servidor de Singular y proporcionar el identificador de dispositivo correspondiente para atribuir correctamente un evento.
Importante:
Se producirán discrepancias si los identificadores de dispositivo utilizados en las solicitudes de eventos de servidor a servidor no tienen un identificador de dispositivo coincidente en Singular. Tenga en cuenta las siguientes posibilidades:
- Si se recibe una solicitud de evento "antes" de que Singular SDK haya registrado el identificador de dispositivo, desde una App Session, entonces la solicitud de evento se considerará la "primera sesión" para el dispositivo desconocido, y Singular atribuirá el dispositivo como una atribución orgánica.
- Si Singular SDK registró un identificador de dispositivo, pero el identificador de Singular SDK difiere del identificador de dispositivo especificado en la solicitud de evento de servidor a servidor, entonces el evento se atribuirá incorrectamente.
Guías de seguimiento de eventos híbridos
Singular puede recopilar datos sobre los ingresos de su Servidor para ayudar a analizar el rendimiento y el ROI de sus campañas.
Requisitos:
- Desde un Evento de Registro o Inicio de Sesión in-app, capture y pase los identificadores de dispositivo y almacene estos datos con el ID de Usuario en su servidor. Dado que los identificadores de dispositivo pueden cambiar para un usuario, asegúrese de actualizar los identificadores cuando un usuario genere una sesión de aplicación. Esto garantiza que el evento del lado del servidor se atribuya al dispositivo correcto.
- Los eventos del lado del servidor son específicos de cada plataforma y sólo deben enviarse con el identificador de dispositivo que coincida con la plataforma del dispositivo (por ejemplo, IDFA o IDFV para dispositivos iOS).
- Puede utilizar el mecanismo de postback de Singular Internal BI para enviar un evento en tiempo real a su endpoint interno para que pueda actualizar el conjunto de datos en el lado del servidor. Consulte las Preguntas Frecuentes sobre Postback de BI Interno.
- Revise la sección "Seguimiento de Ingresos" en la guía de Integración Servidor-a-Servidor para más detalles.
Siga los siguientes enlaces para obtener más información sobre cómo habilitar a estos socios.
Añadir soporte de atribución de ingresos publicitarios
Singular está integrado con plataformas de mediación como Google AdMob, AppLovin, Unity LevelPlay (IronSource) y TradPlus para la atribución de ingresos publicitarios. Singular también es compatible con otras plataformas de mediación a través de nuestra integración genérica de SDK de ingresos publicitarios.
Puede obtener datos de atribución de ingresos publicitarios de su plataforma de mediación añadiendo un fragmento de código a su integración Singular SDK. Esto también le permite obtener datos de ingresos publicitarios para campañas de SKAdNetwork.
Obtener los ingresos publicitarios a nivel de usuario de su plataforma de mediación permite a Singular enviar los ingresos publicitarios atribuidos a las fuentes de medios que pueden aceptar estos datos para ejecutar campañas AdROAS.
Consulte las instrucciones y los fragmentos de código para la implementación del SDK[AQUÍ].
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 código siguiente:
Singular.skanGetConversionValue().then((conversionValue) {
print('conversion value: ' + conversionValue.toString());
});
Otras opciones
Seguimiento de desinstalaciones
Para que Singular realice un seguimiento de las desinstalaciones de aplicaciones, proporcione a Singular el token APNS/FCM, como en el siguiente ejemplo:
// iOS
Singular.registerDeviceTokenForUninstall(apnsToken);
// Android
Singular.registerDeviceTokenForUninstall(fcmToken);
Cumplimiento de las leyes de privacidad de datos
Singular proporciona una funcionalidad de protección de la privacidad para ayudarle a cooperar con cualquier socio que pueda estar cumpliendo con las leyes de privacidad del consumidor, como GDPR y CCPA(California Consumer Privacy Act). Estos socios quieren ser notificados si el usuario final ha dado su consentimiento para compartir su información privada.
Si ha implementado una forma de solicitar a los usuarios su consentimiento para compartir su información, utilice el método limitDataSharing para notificar a Singular la elección del usuario:
Utilice Singular.limitDataSharing(false) para indicar que el usuario consintió (optó) en compartir su información.
Utilice Singular.limitDataSharing(true) si el usuario no dio su consentimiento.
Singular utiliza LimitDataSharing enlos "Postbacks de privacidad del usuario", así como en la transmisión de esta información a los socios que la requieren para cumplir con la normativa pertinente. Consulte"Privacidad del usuario y Limitar el uso compartido de datos" para obtener más información.
Nota: El uso del método es opcional, pero puede haber información de atribución que el socio compartirá con Singular sólo si se le notifica específicamente que el usuario ha optado por ello.
Método Singular.limitDataSharing | |
---|---|
Firma | Singular.limitDataSharing(booleanshouldLimitDataSharing) |
Descripción | Notifica a Singular el consentimiento del usuario (opt-in) para compartir datos privados. El método Limit Data Sharing te da la opción de controlar si tu aplicación envía datos del usuario a terceros. Esto resulta útil si desea restringir el uso compartido de datos en función de las preferencias del usuario o de requisitos de privacidad. |
Ejemplo de uso |
|
Métodos adicionales para el cumplimiento del GDPR
Singular SDK proporciona varios métodos para ayudarle a cumplir con las políticas GDPR y permitir que Singular conozca el consentimiento o no consentimiento del usuario para el seguimiento.
Método Singular.trackingOptIn | |
---|---|
Descripción | Notifica a Singular el consentimiento del usuario (opt-in) para el seguimiento. El método TrackingOptIn() se utiliza para enviar un evento "gdpr" a los servidores de Singular. Si no llama a este método, la aplicación continuará rastreando a los usuarios como si hubieran dado su consentimiento, pero no los marcará específicamente como GDPR opt-in. Si su aplicación necesita cumplir con el GDPR (Reglamento General de Protección de Datos), debe llamar a esta función para asegurarse de que el consentimiento del usuario se registra correctamente. |
Ejemplo de uso |
|
Singular.stopAllTracking Método | |
Descripción |
Detiene todas las actividades de seguimiento de este usuario en esta aplicación. Nota: Al llamar a este método se desactiva el SDK, incluso después de reiniciar la aplicación (el estado es persistente). La única forma de volver a activar el seguimiento es llamando a resumeAllTracking().
|
Ejemplo de uso |
|
Singular.resumeAllTracking Método | |
Descripción | Reanuda el seguimiento para este usuario en esta aplicación. |
Ejemplo de uso |
|
Singular.isAllTrackingStopped Método | |
Descripción | Comprueba el estado del seguimiento de este usuario en esta aplicación. Devuelve true si el seguimiento se ha detenido mediante StopAllTracking() y no se ha reanudado. |
Ejemplo de uso |
|