Guía de integración del SDK de Unity Package Manager

 

Antes de empezar: Requisitos previos del SDK

ADVERTENCIA: Cambios de última hora al actualizar a la versión 5.3.0

A partir de la versión 5.3.0, si su proyecto utiliza compras dentro de la aplicación, Singular requiere la biblioteca Unity In-App Purchase (IAP) como dependencia obligatoria. Esta debe ser importada a su proyecto Unity a través del Unity Package Manager (package.json).

Pasos para habilitar el acceso a las funciones IAP en Singular Unity SDK.

Paso 1: Instale Unity IAP a través de UPM:

  1. Abra el Package Manager: En el Editor de Unity, vaya a Window Package Manager.
  2. Seleccione el Registro de Unity: En la ventana Package Manager, seleccione Unity Registry del menú desplegable en la parte superior.
  3. Busque Unity IAP: Desplázate por la lista o utiliza la barra de búsqueda para encontrar In-App Purchasing o Unity IAP.
  4. Instala el paquete: Una vez que encuentre In-App Purchasing, haga clic en él y luego haga clic en el botón Instalar en el panel derecho.
  5. Verifique la instalación: Después de la instalación, Unity añadirá automáticamente los activos y dependencias necesarios a tu proyecto, incluyendo una carpeta en Assets/Plugins para los activos de Unity Purchasing.

Paso 2: Configurar Scripting Definir Símbolos:

Para cada plataforma (Android e iOS), establezca el siguiente símbolo de definición de secuencias de comandos:

  1. Vaya a Configuración del reproductor > Reproductor > Android/iOS > Compilación de scripts.
  2. Añade "SINGULAR_SDK_IAP_ENABLED" al campo Scripting Define Symbols.
    PlayerSettingIAP.png

    Esto se puede hacer a través del editor de Unity o a través del panel de control de Unity Cloud.

ADVERTENCIA: Si alguno de los pasos anteriores no se completa correctamente, se producirán errores de compilación, lo que podría impedir que el proyecto se compile correctamente.

ADVERTENCIA: ¿Está actualizando de la versión ".unitypackage" a la versión"UPM" del SDK? Debe realizar los pasos específicos de actualización que se indican a continuación.
IMPORTANTE: Realice estos pasos de actualización antes de proceder con la instalación del SDK UPM.

La actualización requiere la eliminación manual de los archivos existentes de Singular SDK, que se importaron utilizando el proceso de integración obsoleto del .unitypackage.
Esto DEBE realizarse antes de importar el SDK con Unity Package Manager (UPM).

Elimine la siguiente lista de archivos antes de integrar el SDK utilizando el Unity Package Manager (UPM). Tenga especial cuidado y asegúrese de eliminar sólo los archivos Singular como se indica aquí:

  1. De la carpeta /Code del proyecto:
    unity_upgrade_code_folder_file_removal.png

  2. De la carpeta /Plugins/Android del proyecto, elimine los AARs y JARs:
    unity_upgrade_plugin_android_folder_file_removal.png

  3. De la carpeta /Plugins/iOS del proyecto, elimina los archivos .h y .m de iOS y el .xcframework:
    unity_upgrade_plugin_ios_folder_file_removal.png

1. 1. Instalación del SDK

1.1. Descarga e Importación del Paquete SDK

Instalando el SDK de Singular Unity usando el Unity Package Manager (UPM)
  1. En la ventana del Gestor de Paquetes:

      • Haga clic en el botón [+].
      • Seleccione "Añadir paquete desde URL git"
      • Para el SDK No-Kids
        Introduzca la URL de GitHub del SDK de Singular Unity:
        https://github.com/singular-labs/Singular-Unity-SDK.git
      • Para el SDK Kids
        Introduzca la URL de GitHub de Singular Unity Kids SDK:
        https://github.com/singular-labs/Singular-Unity-SDK.git#kids

    unity-git-url.png

  2. Haga clic en el botón "Añadir
IMPORTANTE: Si NO utiliza EDM4U de Google, siga estos pasos adicionales.

1.2. Configuración para Android

TIP: ¿Cómo se actualiza el AndroidManifest cuando se utiliza Unity?
  1. A partir de Unity v2018.3, puedes añadir tu propio archivo AndroidManifest simplemente habilitando la propiedad Custom Main Manifest en la ventana Player (a la que se puede acceder desde File > Build Settings > Player Settings > Publishing settings). Esto genera un archivo AndroidManifest.xml por defecto para usted, que puede editar.

    El archivo estará en la ubicación Assets/Plugins/Android/AndroidManifest.xml

    Fuente: https://docs.unity3d.com/2023.2/Documentation/Manual/android-manifest.html

  2. En lugar de utilizar el archivo Main Manifest personalizado de Unity, puede acceder al AndroidManifest. xml desde Android Studio después de exportar la aplicación desde Unity.

TIP: Cómo actualizar la configuración de Gradle cuando se utiliza Unity.
  1. A partir de Unity v2018.3, puedes añadir tu propio archivo de construcción Gradle personalizado simplemente habilitando la propiedad Custom Gradle Template en la ventana Player (a la que se accede desde File > Build Settings > Player Settings > Publishing settings). Esto genera un archivo mainTemplate.gradle predeterminado para que usted lo edite.

    El archivo estará en la ubicación Assets/Plugins/Android/mainTemplate.gradle

    Fuente: https://docs.unity3d.com/2023.2/Documentation/Manual/android-gradle-overview.html

  2. En lugar de utilizar el archivo de compilación Gradle personalizado de Unity, puede acceder al archivo build.gradle de las aplicaciones desde Android Studio después de exportar la aplicación desde Unity.

¿Estás usando Proguard

Si está utilizando Proguard, añada las siguientes líneas de código a su archivo proguard-unity.txt:

-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }

1.3. Consejos para iOS

TIP: Actualice Cocoa Pods después de construir en Unity y antes de construir en Xcode.

Recomendamos iniciar el siguiente comando desde la carpeta donde se encuentra Pods.

pod repo update
pod update
TIP: Registrar el identificador IDFV desde applicationDidBecomeActive().

Para realizar pruebas en iOS, recomendamos añadir la siguiente línea de código en el directorio: Clases > UnityAppController > función applicationDidBecomeActive.

// Printing Identifier for Vendor (IDFV) to Xcode Console for use in Singular SDK Console


NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);

idfv.png

Esto le permitirá recuperar el identificador IDFV en el App Open en los Logs de Xcode. Utilice este identificador en la consola Singular SDK para añadir el dispositivo de prueba.

idfv3.png

CONSEJO: Recordatorios de soporte Deeplink
  1. Añada el Dominio Asociado en Firma y Capacidades. Sin el dominio asociado correctamente configurado, la aplicación NO se abrirá al hacer clic en un enlace de seguimiento de Singular.

  2. Compruebe que el ID de equipo también se ha añadido a la página de la aplicación en la plataforma Singular. Esto permitirá a Singular construir y alojar el Archivo de Asociación del Sitio de la App de Apple requerido para habilitar la funcionalidad de Enlaces Universales.

2. Integración SDK

2.1. Crear el SingularSDKObject

Añada el SingularSDKObject a la jerarquía.

Añada el SingularSDKObject utilizando el objeto prefab Singular.

Mueva el objeto prefabricado Singular al panel de Jerarquía

  • Desde el panel Proyecto, Navegue a: Paquetes > Singular > SingularSDK > Prefabs.
  • Mueva el objeto SingularSDKObject al panel Jerarquía.
    unity_prefab.png
Si NO utiliza el GameObject prefabricado, añada manualmente el GameObject "SingularSDKObject", siguiendo estos pasos.

En el panel de Jerarquía:

  1. Cree un GameObject vacío en su escena principal.
  2. Nombre el GameObject SingularSDKObject.
    IMPORTANTE: El GameObject debe llamarse "SingularSDKObject" para que funcione el SDK de Singular.
  3. Haga clic en el SingularSDKObject.
  4. Navegue hasta el panel de inspección.
  5. En el panel de inspección, haga clic en Añadir componente.
  6. En el campo de búsqueda, escribe"Singular" y selecciona el script"Singular SDK".
    unity_add_script.png

Configure los ajustes de SingularSDKObject

  1. En el panel Inspección para el SingularSDKObject, pegue su Clave SDK Singular y Secreto SDK en los campos respectivos. Para recuperar la clave y el secreto del SDK, inicie sesión en su cuenta de Singular y vaya a"Developer Tools > SDK Integration > SDK Keys").

    sdk_keys.png
    IMPORTANTE: NO UTILICE la clave API de Singular Reporting o no recibirá sus datos SDK. Siga las instrucciones anteriores para recuperar la clave y el secreto adecuados.
    unity_singularsdkobject_settings.png

    Si la clave y el secreto de Singular SDK se aplican incorrectamente, los datos no se enviarán a Singular.
    Pruebe su implementación utilizando la consola de Singular SDK para verificar el comportamiento correcto.

    Nota: Configuración predeterminada del panel de inspección para SingularSDKObject:

    Las siguientes opciones están habilitadas en el Panel de Inspección:

    • Initialize On Awake (marcado)

      Esta configuración permite a Unity controlar la Inicialización del Singular SDK basado en el estado Awake de la App.

      Cumpla con los requisitos de privacidad de su aplicación y actualice esta opción según sea necesario. Desmarcando la opción se desactiva la inicialización de Singular SDK en el estado Awake y requeriría la inicialización manual.

    • SKAN Habilitado (marcado)

      A partir de Unity SDK versión 4.0.17, SKAdNetwork está habilitado por defecto. Está habilitado en Modo Administrado (en el cual Singular actualiza el valor de conversión SKAN por usted utilizando un modelo de conversión que usted elige en el tablero de Singular).

    • Esperar autorización de seguimiento, establecido en 0 (desactivado)

      Si su aplicación muestra el mensaje de transparencia de seguimiento de aplicaciones (ATT ), se recomienda establecer este tiempo de espera en 300 segundos. La adición del tiempo de espera retrasa la sesión de Singular SDK, lo que permite al usuario autorizar/denegar el consentimiento de AppTrackingTransparency antes de registrar eventos en los servidores de Singular. Una vez que el Usuario responde a la solicitud de ATT, Singular SDK continuará sin demora. Esto permite capturar el identificador IDFA para Install Attribution cuando se proporciona el consentimiento. Si no muestra ATT, el valor predeterminado de esta opción debe seguir siendo 0 (sin espera).

    • Habilitar registro (marcado)

      Habilita el registro desde Singular SDK. Debe utilizarse con la opción"Nivel de registro".
      "Log Level" debe especificarse con un número "int", tal y como se especifica en el mapeo enum a continuación. Cuanto menor sea el número en este rango, más detallados serán los registros.

      //Based on Android Logger.java log levels enum: android.util.Log
      public enum LogLevel {
         Verbose = 2,
         Debug   = 3,
         Info    = 4,
         Warn    = 5,
         Error   = 6,
         Assert  = 7
         }

      Nota: Actualmente, la mayoría de los registros sólo están disponibles en Android.

    • Ddl Timeout Sec establecido a 0

      Por defecto, el valor "0" utiliza un tiempo de espera de 60 segundos. Esto indica al servidor Singular cuánto tiempo debe buscar un valor de enlace profundo vinculado a la atribución del último toque. Si se encuentra un enlace profundo diferido, se devuelve a la aplicación en la respuesta a la solicitud de sesión del SDK y se procesa en el SingularLinkHandler. El servidor deja de buscar si no se encuentra ningún enlace profundo diferido en 60 segundos.

    • Session Timeout Sec (Tiempo de espera de sesión) establecido en 0

      Este es el tiempo de espera en segundos antes de que el SDK Singular registre una nueva sesión cuando la aplicación está en segundo plano y vuelve al primer plano. Por defecto, el valor "0" utiliza un tiempo de espera de 60 segundos. Si es necesario, puede ajustar esta configuración para una ventana más grande.

    • Tiempo de espera de Shortlink Resolve ajustado a 0

      Por defecto, el valor "0" utiliza un tiempo de espera de 10 segundos. Este tiempo de espera protege la experiencia del usuario. Si el enlace corto indicado no se resuelve en el tiempo especificado, Singular SDK no activa un controlador de enlace profundo.

    Otras opciones del panel de inspección:

    Activar Facebook (META Install Referrer)

    Para admitir el método de atribución META Install Referrer, añada su ID de aplicación de Facebook al panel de inspección en el SingularSDKObject.

    1. Haga clic en el SingularSDKObject en su Escena Principal.
    2. Abra el panel de inspección y localice el campo "Facebook App ID".
    3. Añade el ID de tu aplicación de Facebook.

2.2. Uso de SKAdNetwork

A partir de Unity SDK versión 4.0.17, SKAdNetwork está habilitado por defecto. Está habilitado en el modo gestionado (en el que Singular actualiza el valor de conversión de SKAN por usted utilizando un modelo de conversión que usted elige en el panel de control de Singular).

Para utilizar SKAdNetwork, no es necesario configurar nada más ni añadir ningún código, siempre y cuando esté utilizando el SDK más reciente.

Información adicional

Activación de SKAdNetwork en versiones anteriores del SDK

Si está utilizando una versión anterior del SDK, deberá habilitar SKAdNetwork de una de las siguientes maneras:

  • Vaya al SingularSDKObject y establezca SKANEnabled en True.
  • Llame a SingularSDK.SkanRegisterAppForAdNetworkAttribution() en el código de su aplicación.
Uso de SKAdNetwork en modo manual (Avanzado)

Si decide gestionar el valor de conversión SKAN manualmente utilizando su lógica, deberá hacer lo siguiente:

  • Vaya al SingularSDKObject y establezca manualSKANConversionManagement en True.
  • Utilice los siguientes métodos en su código para establecer y recuperar el valor de conversión.
Método SingularSDK.SkanUpdateConversionValue
Descripción

Actualiza el valor de conversión de SKAdNetwork.

Nota: utilice este método si ha seleccionado actualizar el valor de conversión de SKAdNetwork manualmente. Este método sólo funcionará si manualSKANConversionManagement tiene el valor True.

Firma public void SkanUpdateConversionValue(int valor)
Ejemplo de uso
// A sign-up event happened


Singular.Event("SignUp");

// Update the conversion value to 7


SingularSDK.SkanUpdateConversionValue(7);
Método SingularSDK.SkanGetConversionValue
Descripción Obtiene el valor de conversión actual rastreado por Singular SDK.
Firma público int? SkanGetConversionValue()
Ejemplo de uso
int? value = SingularSDK.SkanGetConversionValue();
Método SingularSDK.SetConversionValueUpdatedHandler
Descripción Establece un controlador para recibir notificaciones cuando se actualice el valor de conversión.
Firma public void SetConversionValueUpdatedHandler(SingularConversionValueUpdatedHandler handler)
Ejemplo de uso
public class Main : MonoBehaviour, SingularConversionValueUpdatedHandler {
  void Awake() {
    SingularSDK.SetConversionValueUpdatedHandler(this);
  }

  void OnConversionValueUpdated(int value) {
    // Use the conversion value


  }
}

2.3. Manejar el consentimiento de App Tracking Transparency(ATT) de iOS

¿Está mostrando el aviso App Tracking Transparency(ATT)?

A partir de iOS 14.5, las aplicaciones deben solicitar el consentimiento del usuario (mediante el marco App Tracking Transparency) antes de poder acceder y compartir algunos datos del usuario, incluido el IDFA del dispositivo, que es útil para fines de seguimiento.

Singular y las redes publicitarias se benefician enormemente de disponer del IDFA para identificar dispositivos y realizar la atribución de instalaciones (aunque hay formas de hacerlo sin el IDFA). Recomendamos encarecidamente solicitar el consentimiento del usuario para obtener el IDFA.

Se recomienda retrasar la inicialización de Singular SDK hasta que el usuario responda a la solicitud de 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, solicitar el consentimiento y recuperar el IDFA antes de que el SDK de Singular envíe la primera sesión es esencial.

SUGERENCIA: Si su aplicación muestra el mensaje de Transparencia de seguimiento de aplicaciones (ATT), se recomienda establecer el tiempo de espera en 300 segundos. Si no muestra ATT, el valor predeterminado para esta opción debe seguir siendo 0 (sin espera).

Para configurar el waitForTrackingAuthorizationWithTimeoutInterval ajuste la opción de configuración en el panel de Inspección de SingularSDKObject . Esto establece el tiempo máximo (en segundos) para que el Singular SDK espere a que el Usuario autorice/deniegue el Consentimiento de AppTrackingTransparency antes de registrar eventos en los servidores de Singular.

2.4. Manejo de enlaces profundos

Los enlaces profundos son URLs que dirigen a los usuarios a contenidos específicos dentro de una aplicación. Cuando un usuario hace clic en un enlace profundo en un dispositivo con la aplicación ya instalada, la aplicación se abre y muestra un producto o experiencia en particular.

Los enlaces de seguimiento singulares pueden incorporar tanto enlaces profundos como enlaces profundos diferidos. Para más detalles, puede consultar nuestras Preguntas frecuentes sobre enlaces profundos y las Preguntas frecuentes sobre enlaces singulares.

Notas:

Amplíe las secciones a continuación para obtener más detalles sobre la compatibilidad de plataformas y el código del controlador:

Soporte de enlaces profundos en Android

Soporte de deep linking en Android

  1. Abra el archivo Project > Assets > Plugins > Android > AndroidManifest.xml en un editor.
  2. Actualice la propiedad del nombre de la actividad de la predeterminada:
    <activity android:name="com.unity3d.player.UnityPlayerActivity"

    a:

    <activity android:name="com.singular.unitybridge.SingularUnityActivity"

    O

    IMPORTANTE: Si ha implementado una actividad personalizada:
    1. Añada la sentencia import para el SingularUnityBridge donde está implementando onNewIntent.

      import com.singular.unitybridge.SingularUnityBridge;
    2. Llame a SingularUnityBridge.onNewIntent(intent); desde el método onNewIntent en su actividad:

      Ejemplo:
      @Override
      protected void onNewIntent(Intent intent) {
          setIntent(intent);
      
          // Call this method from your custom activity in onNewIntent
      
      
          SingularUnityBridge.onNewIntent(intent);
      }

    ADVERTENCIA: Si ha creado una actividad personalizada para su aplicación, y no extiende (hereda de) la Actividad de Unity Player, entonces puede considerar agregar guardias en el método onNewIntent para manejar casos en los que el objeto de actividad actual podría ser nulo.

  3. Agregue un Intent Filter en la actividad apropiada para soportar Android App Links con su nombre de host elegido. El valor host android:host debe coincidir con el dominio de Singular Links configurado para los enlaces de seguimiento.
    <!-- Added Intent Filter for Singular Android Links Deeplinking -->
    <!-- Replace example with your value -->
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http" />
      <data android:scheme="https" />
      <data android:host="example.sng.link" />
      <data android:pathPrefix="/A"/>
      <data android:pathPrefix="/B"/>
      <data android:pathPrefix="/E"/>
      <data android:pathPrefix="/F"/>
    </intent-filter>
Soporte de deep linking en iOS

Soporte de enlaces profundos en iOS

Singular utiliza iOS Universal Links y esquemas de aplicación para realizar enlaces profundos en iOS. Siga estos pasos para permitir que su aplicación utilice iOS Universal Links y esquemas de aplicación para enlaces profundos con Singular Links.

  1. Configure al menos un subdominio para sus enlaces en la página Atribución > Gestionar enlaces en Singular. Para obtener más información, consulte las preguntas frecuentes sobre Singular Links.
  2. Para configurar Universal Links (enlaces profundos en iOS):
    • Inicie sesión en el portal para desarrolladores de Apple.
    • Vaya a Identificadores y seleccione la aplicación a la que desea añadir compatibilidad con Universal Links.

      identifiers.png

    • En el menú Capacidades, marque la casilla Dominios asociados y haga clic en Guardar.

      associateddomains.png

  3. Para añadir el derecho "Dominios asociados" a su aplicación:
    • En XCode, ve a Configuración del proyecto > Capacidades > Dominios asociados.

    • Añade tus dominios de Singular Links.

      associateddomains2.png

  4. Copie su "prefijo de aplicación" (también conocido como "ID de equipo") del portal para desarrolladores de Apple.
  5. En Singular, vaya a Configuración de aplicaciones, busque su aplicación, expanda la Configuración avanzada de aplicaciones iOS y pegue el valor en el campo ID de equipo. Esto permitirá a Singular alojar el archivo apple-app-site-association en su dominio Singular para los enlaces universales.

    mceclip3.png

  6. Nota: Este paso es necesario en los casos en que los enlaces universales no pueden establecer enlaces profundos.
    Debajo del "ID de equipo", introduzca el"Esquema de aplicación" de iOS para habilitar la vinculación profunda con enlaces profundos de esquema de aplicación tradicional como alternativa a la vinculación profunda de Universal Link.
    mceclip4.png

    Si es la primera vez que su aplicación admite un esquema de aplicación iOS para enlaces profundos, asegúrese de que el esquema de aplicación esté registrado como "Tipo de URL" en su proyecto Xcode:
    Screenshot of Xcode showing the URL Types section with a URL that reads "com.example.myphotoapp."

    Para obtener más información sobre la compatibilidad de esquemas de aplicaciones con su aplicación de iOS, consulte el artículo de ayuda para desarrolladores de Apple sobre el tema.

2.5. Inicialización del SDK

Nota: Cuando implemente los SDK de Singular, recuerde cumplir las distintas leyes de privacidad promulgadas en las regiones en las que realiza negocios, incluidas GDPR, CCPA, COPPA y otras. Para obtener más información, consulte Prácticas de inclusión y exclusión de SDK.

El código de inicialización del SDK debe ejecutarse cada vez que se abra la aplicación. Es un requisito previo para toda la funcionalidad de atribución de Singular y envía una nueva sesión a Singular, que se utiliza para calcular la retención de usuarios.

Por defecto, SingularSDK.cs inicializa el SDK automáticamente cuando se crea la escena a través del método Awake.

Inicialización manual

Si prefiere inicializar el SDK manualmente en un momento posterior de la ejecución de la aplicación, haga lo siguiente:

  1. Desactive la opción Initialize on Awake en el panel de inspección del objeto SingularSDK.
  2. Utilice el método estático SingularSDK.InitializeSingularSDK para inicializar el SDK:
Método SingularSDK.InitializeSingularSDK
Descripción Inicializa el Singular SDK si no se ha inicializado al despertar.
Firma
public void InitializeSingularSDK()
Ejemplo de uso
// SDK Key and SDK Secret are set on the 


// game object associated with SingularSDK 


SingularSDK.InitializeSingularSDK();

Nota sobre la seguridad de los hilos: El Singular Unity SDK siempre debe ser llamado desde el mismo thread, tal como se llaman otros métodos de Unity.

2.6. Configuración del tiempo de espera de la sesión (opcional)

Por defecto, si la aplicación se ejecuta en segundo plano durante 60 segundos o más antes de volver al primer plano, Singular SDK registra una nueva sesión. Puede cambiar el valor predeterminado del tiempo de espera modificando la propiedad Session Timeout Sec de su SingularSDKObject.

2.7. Envío del ID de usuario a Singular (opcional)

Puede enviar su ID de usuario interno a Singular utilizando un método de Singular SDK.

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.
  • Cuando se establece con el método Singular SDK, el valor del ID de usuario persiste hasta que se desestablece utilizando el método UnsetCustomUserId o hasta que se desinstala 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 este modo, Singular puede obtener 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 SingularSDK.SetCustomUserId
Descripción Envía el ID de usuario a Singular.
Firma public void SetCustomUserId(cadena customUserId)
Ejemplo de uso
SingularSDK.SetCustomUserId("custom_user_id");
Método SingularSDK.UnsetCustomUserId
Descripción Anula la configuración del identificador de usuario que se ha enviado a Singular.
Firma public void UnsetCustomUserId()
Ejemplo de uso
SingularSDK.UnsetCustomUserId();

Opcional: Asignación del ID de usuario personalizado

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 Singular o una vez que tenga el ID de usuario.

Método SingularSDK.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 public void SetDeviceCustomUserId(string customUserId)
Ejemplo de uso
SingularSDK.SetDeviceCustomUserId('CustomUserId');

3. Seguimiento de eventos e ingresos

3.1. Seguimiento de eventos (no 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 admite una variedad de eventos estándar. Las redes publicitarias suelen admitir estos eventos de uso común para la elaboració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 Cómo realizar el seguimiento de eventos en la aplicación: Guía para clientes de Singular Attribution.

Con cada evento que rastree, puede pasar varios atributos. Consulte los atributos estándar recomendados por evento.

Envíe eventos estándar a Singular utilizando los métodos event o eventWithArgs en su código.

Nota: Para los eventos estándar, utilice el nombre Unity del evento tal y como aparece en la Lista de eventos y atributos estándar del SDK de Unity, por ejemplo, sngLogin.

SingularSDK.Event(Events.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 (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.

Método SingularSDK.Event
Descripción Envía eventos de usuario a Singular para su seguimiento.
Firmas
public static void Event(string name)
public static void Event(string name, params object[] args)
public static void Event(Dictionary<string, object> args, string name)

Nota: Al pasar diccionarios, los valores del diccionario deben tener uno de estos tipos: string, int, long, float, double, null, ArrayList, Dictionary<string, object>.

Ejemplos de uso

// 1) Send the standard event Login


SingularSDK.Event(Events.sngLogin);
// 2) An example custom event passing two key value pairs


SingularSDK.Event("myEventName", "Key1", "Value1", "Key2", 1234);
// 3) An example JSON Event passing a dictionary


// Create a dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["key1"] = "value1";
attributes["key2"] = "value2";
attributes["key3"] = "value3";
// Add more attributes as needed



SingularSDK.Event(attributes, "myEventName");

3.2. Seguimiento de ingresos

Singular puede recopilar datos sobre los ingresos obtenidos a través de la aplicación para ayudar a analizar el rendimiento y el ROI de sus campañas. Singular hará que los datos estén disponibles en informes, exportación de registros y postbacks.

Notas: Cualquier ingreso reportado en una moneda diferente será convertido automáticamente a la moneda preferida de su organización establecida en su cuenta de Singular.

Puede realizar un seguimiento de los eventos de ingresos utilizando el objeto IAP (In-App Purchases) integrado de Unity. De esta manera, Singular obtiene toda la información disponible sobre la compra para obtener informes más completos. Singular también obtiene el recibo de compra, que Singular utiliza en el back-end para validar la compra y descartar el fraude de atribución.

Método SingularSDK.InAppPurchase
Descripción Envía un producto IAP a Singular para realizar un seguimiento del evento de compra.
Firmas
public static void InAppPurchase(Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(IEnumerable<Product> products,
Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName,IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)

Notas:

  • product es el objeto producto recibido de IAP: UnityEngine.Purchasing.Product
  • atributos: Utilice este parámetro para pasar información adicional a Singular. Si no tiene atributos para pasar, simplemente pase null.
  • isRestored: Indica si la transacción está restaurada. Por defecto: false.
Ejemplos de uso
// IAP with a single product and no extra attributes


SingularSDK.InAppPurchase(myProduct, null);
// IAP with a single product and attributes


var attr = new Dictionary<string, object>() {
["my_first_attribute"] = "value1",
["my_second_attribute"] = "value2"};
 
SingularSDK.InAppPurchase(myProduct, attr);
// IAP with with a single product, 


// no extra attributes and a custom event name



SingularSDK.InAppPurchase("MyCustomProduct",
myProduct, null);
// IAP with list of products, no extra attributes


SingularSDK.InAppPurchase(myProductList, null);
// IAP with with list of products, no extra attributes


// and a custom event name



SingularSDK.InAppPurchase("MyCustomProducts",
myProductList, null);
Forma alternativa de realizar el seguimiento de los ingresos: Métodos Revenue y CustomRevenue

Si no puede utilizar Unity IAP, el SDK de Singular proporciona dos métodos para pasar información sobre una compra a Singular "manualmente":

  • Utilice Revenue para pasar información sobre una compra a Singular detallando la moneda de la transacción, el importe y otros detalles opcionales.
  • CustomRevenue es similar pero le permite dar un nombre personalizado al evento.

Nota: Si utiliza Revenue/CustomRevenue en lugar de InAppPurchase, Singular no podrá verificar el recibo de compra.

Método SingularSDK.Revenue
Descripción Envía un evento de ingresos a Singular.
Firmas
public static void Revenue(string currency, double amount)
public static void Revenue(string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void Revenue(string currency, double amount, Dictionary<string, object> attributes)
Nota: Pase la moneda como un código de moneda ISO 4217 de tres letras, como "USD", "EUR", "INR".
Ejemplo de uso
// Send a revenue event with no product details


SingularSDK.Revenue("USD", 1.99);
// Send a revenue event with product details


SingularSDK.Revenue("USD", 4.99, "coin_package_abc123", "Coin Pack 5", "Bundles", 1, 4.99);
// Send a revenue event with JSON Dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["productSKU"] = "coin_package_abc123";
attributes["productName"] = "Coin Pack 5";
attributes["productCategory"] = "Bundles";
attributes["productQuantity"] = 2;
attributes["productPrice"] = 4.99;

SingularSDK.Revenue("USD", 9.98, attributes);
Método SingularSDK.CustomRevenue
Descripción Envía un evento de ingresos con un nombre personalizado a Singular.
Firmas
public static void CustomRevenue(string eventName, string currency, double amount)
public static void CustomRevenue(string eventName, string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void CustomRevenue(string eventName, string currency, double amount, Dictionary<string, object> attributes)
Nota: Pase la moneda como un código de moneda ISO 4217 de tres letras, como "USD", "EUR", "INR".
Ejemplo de uso
// Send a revenue event with a custom name


SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);
// Send a revenue event with a custom name + product details


SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, "abc123", "myProductName", "myProductCategory", 2, 25.50);
// Send a revenue event with a custom name + JSON Dictionary for attributes


// Create a dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["productSKU"] = "coin_package_abc123";
attributes["productName"] = "Coin Pack 5";
attributes["productCategory"] = "Bundles";
attributes["productQuantity"] = 2;
attributes["productPrice"] = 4.99;
// Add more attributes as needed



SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.98, attributes);

3.3. 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 de 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

Envío de eventos desde un servidor interno

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 BI Interno Singular para enviar un evento en tiempo real a su punto final 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.
Envío de Eventos desde un Proveedor de Ingresos
Proveedores de terceros como RevenueCat o adapty pueden proporcionar Ingresos por Compras y Suscripciones a Singular.

Siga los siguientes enlaces para obtener más información sobre cómo habilitar a estos socios.

Envío de Eventos desde Segmento

Para que Segment pueda enviar eventos a Singular, en paralelo con el SDK de Singular, debe añadir un Destino "Cloud-Mode " en Segment. Siga nuestra guía AQUÍ.

4. Opciones Avanzadas

4.1. Creación de Enlaces de Referencia Cortos

Nota: Esta funcionalidad está disponible en la versión 4.0.16+ del SDK.

Utilice los enlaces cortos para transformar enlaces singulares largos y llenos de parámetros en enlaces más cortos y seguros que sean convenientes para compartir.

Normalmente, querrá crear enlaces cortos de forma dinámica para que los usuarios de su aplicación puedan compartirlos con sus amigos para invitarles a utilizar la aplicación.

Para crear un enlace corto, necesitas

  • Un Enlace Singular que lleve a la descarga de tu app (consulta las Preguntas Frecuentes sobre Enlaces Singulares).
  • Puede añadir los parámetros que desee al enlace de forma dinámica (consulte Parámetros del enlace de seguimiento para ver la lista de opciones).
  • Si desea realizar un seguimiento de las nuevas instalaciones de la aplicación hasta el usuario que compartió el enlace, debe proporcionar el Nombre de remitente y el ID de remitente del usuario remitente.

Utilice el método createReferrerShortLink para crear un enlace corto, como en el ejemplo siguiente.

void callback(string shortLinkURL, string error){
    // Add your share logic here if shortLinkURL is not null


    // If there was an error, add logic to retry/abort/modify the params


    // passed to the function, based on the cause of the error


}

SingularSDK.createReferrerShortLink(
    "https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com",
    "John Doe", // Referrer Name


    "342", // Referrer ID


    new Dictionary<string, string>() { 
        // a Dictionary object containing any parameters you want to add


        {"channel", "sms"}
    },
    callback 
);

4.2. 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Í].

4.3. Seguimiento de desinstalaciones

Nota: El seguimiento de desinstalaciones sólo está disponible para clientes Enterprise.

Seguimiento de desinstalaciones en Android

Para habilitar el seguimiento de desinstalaciones para su aplicación Android, primero configure la aplicación en la plataforma Singular como se detalla en Configuración del seguimiento de desinstalaciones. A continuación, siga las siguientes instrucciones.

Nota: Google dejó obsoletas las API de FCM en abril de 2018. Utiliza FCM para el seguimiento de desinstalaciones.

Habilitación del seguimiento de desinstalaciones mediante Firebase Cloud Messaging (FCM):

1. Integrarse con FCM:

Para realizar un seguimiento de las desinstalaciones, puedes utilizar los servicios de la plataforma Firebase Cloud Messaging (FCM). Si aún no utiliza FCM, siga las instrucciones de Google sobre cómo configurar una aplicación cliente de Firebase Cloud Messaging en Android.

Requisitos de FCM(fuente)

Los clientes FCM requieren dispositivos Android 4.1 o superior con la aplicación Google Play Store instalada o un emulador que ejecute Android 4.1 con las API de Google. Tenga en cuenta que no está limitado a desplegar sus aplicaciones Android a través de Google Play Store.

Los usuarios/dispositivos que no se ejecuten en versiones compatibles de Android no estarán disponibles para el seguimiento de desinstalaciones de Singular.

2. Actualice el archivo AndroidManifest.xml:

Actualiza tu archivo AndroidManifest.xml para añadir el filtro de intent necesario para tu app (sustituye MyFirebaseMessagingService por tu clase que implemente el servicio Firebase):

<service android:name=".java.MyFirebaseMessagingService" android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter> 
</service>

3. Registrar y enviar el token de dispositivo FCM:

Después de recuperar el token FCM, pásalo como parámetro al método 'RegisterTokenForUninstall':

SingularSDK.RegisterTokenForUninstall(String fcmDeviceToken);

El método 'RegisterTokenForUninstall' debe llamarse antes que elmétodo 'SingularSDK.InitializeSingularSDK()'.

Seguimiento de desinstalaciones en iOS

El seguimiento de la desinstalación en iOS se basa en la tecnología de notificaciones push de Apple. Si su aplicación no es compatible con las notificaciones push, consulte la guía de Apple. Si su aplicación ya admite notificaciones push, debe pasar el token de dispositivo devuelto por APNS mediante el método RegisterTokenForUninstall una vez inicializado el SDK.

MétodoSingularSDK.RegisterTokenForUninstall
Descripción Pasa el token de dispositivo devuelto por APNS. El token APNS suele ser un dato binario en su forma nativa, pero debe pasarlo como una cadena.
Firma
public static void RegisterTokenForUninstall
(string APNSToken)
Ejemplo de uso
// pass the APNS token as a hex-string 


  SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7
f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");

4.4. Añadir propiedades globales

Con cada sesión y evento enviado desde la aplicación, el SDK de Singular le permite definir propiedades adicionales personalizadas para enviar a los servidores de Singular. Estas propiedades pueden representar cualquier información que desee sobre el usuario, el modo de la aplicación, el estado o cualquier otra cosa. Una vez definidas estas propiedades, estarán disponibles como dimensiones en sus informes, y podrá utilizarlas para desglosar sus datos.

Por ejemplo, si tienes una aplicación de juegos, puedes definir una propiedad llamada "Nivel" y establecerla inicialmente en "0". Cualquier sesión y evento enviado desde la app se enviará con "Nivel": "0". Una vez que el usuario sube de nivel, restableces la propiedad a "1" y así sucesivamente. A continuación, puede obtener sus informes, incluyendo sesiones, recuentos de eventos y datos de ingresos, desglosados por nivel de usuario.

  • Puedes definir hasta 5 propiedades globales.
  • Persisten entre las ejecuciones de la aplicación (con el último valor que les hayas dado) hasta que las desestablezcas o el usuario desinstale la aplicación.
  • El nombre y el valor de cada propiedad pueden tener un máximo de 200 caracteres. Si pasas un nombre o valor de propiedad más largo, se truncará a 200 caracteres.
  • Las propiedades globales son accesibles y están disponibles en las exportaciones a nivel de usuario y en los postbacks. En el futuro, se añadirá soporte para informes agregados. Si tiene alguna pregunta o está interesado en las actualizaciones de las propiedades globales, póngase en contacto con su gestor de atención al cliente de Singular.

Configuración de propiedades globales antes de la inicialización

Puede utilizar el método SetGlobalProperty para establecer propiedades globales a través de SingularSDK antes de inicializar el SDK. Si desea que sus propiedades globales se incluyan en la sesión, desactive el indicador 'Initialize On awake'.

Dado que las propiedades globales y sus valores persisten entre las ejecuciones de la aplicación, es posible que la propiedad que está configurando ya tenga un valor diferente. Utilice el parámetro overrideExisting para indicar al SDK si debe anular una propiedad existente con el nuevo valor.

Configuración de propiedades globales tras la inicialización

Puede utilizar los siguientes métodos para establecer, desestablecer y recuperar propiedades globales en cualquier momento durante la ejecución de la aplicación.

Método SingularSDK.SetGlobalProperty
Descripción

Establece una propiedad global en un valor determinado.

Notas:

  • Si la propiedad aún no existe y ya hay otras 5 propiedades globales, no se añadirá.
  • Si la propiedad ya ha sido establecida, el parámetro overrideExisting determina si el valor existente será anulado.
  • El método devuelve true si la propiedad se ha establecido correctamente o false en caso contrario.
Firma public static bool SetGlobalProperty(cadena clave, cadena valor, bool overrideExisting)
Ejemplo de uso
bool result = SingularSDK.SetGlobalProperty("key", "value", false);
Método SingularSDK.GetGlobalProperties
Descripción Recupera todas las propiedades globales y sus valores actuales como un mapa.
Firma public static Dictionary<string, string> GetGlobalProperties()
Ejemplo de uso
Dictionary<string, string> props = SingularSDK.GetGlobalProperties();
Método SingularSDK.UnsetGlobalProperty
Descripción Elimina una propiedad global.
Firma public static void UnsetGlobalProperty(cadena clave)
Ejemplo de uso
SingularSDK.UnsetGlobalProperty(“test_key”);
Método SingularSDK.ClearGlobalProperties
Descripción Elimina todas las propiedades globales.
Firma public static void BorrarPropiedadesGlobales()
Ejemplo de uso
SingularSDK.clearGlobalProperties();

4.5. Recopilación de la referencia de instalación en dispositivos Android antiguos

En Android, la referencia de instalación es la herramienta más precisa de Singular para determinar la atribución y ayudar a Singular a detectar y analizar los intentos de fraude. Se trata de un identificador proporcionado por Google Play Store que apunta al anuncio en el que el usuario hizo clic antes de instalar la aplicación.

En dispositivos con la última versión de Google Play Store, el SDK de Singular recopila automáticamente el valor de referencia de instalación (ya que Singular está integrado con la última API de referencia de Google Play).

Para recopilar el referrer de instalación en dispositivos más antiguos, siga las instrucciones de la guía Android SDK.

5. Cumplimiento de las leyes de privacidad de datos

5.1. LimitDataSharing

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.

Limitar el uso compartido de datos

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 limitDataSharing:NO para indicar que el usuario ha dado su consentimiento (optado) para compartir su información.
  • Utilice limitDataSharing:YES si el usuario no dio su consentimiento.

Singular utiliza LimitDataSharing en los"Postbacks de privacidad del usuario" y transmite 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 el socio puede compartir información de atribución con Singular sólo si se notifica específicamente que el usuario ha optado por ello.

Método SingularSDK.LimitDataSharing
Firma SingularSDK.LimitDataSharing(boolshouldLimitDataSharing)
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
// User has opted in to sharing data


SingularSDK.LimitDataSharing(false);

5.2. Métodos adicionales para el cumplimiento de 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 SingularSDK.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
SingularSDK.TrackingOptIn();
Método SingularSDK.StopAllTracking
Descripción Detiene todas las actividades de seguimiento de este usuario en esta aplicación.
Nota: Este método 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
SingularSDK.StopAllTracking();
Método SingularSDK.ResumeAllTracking
Descripción Reanuda el seguimiento para este usuario en esta aplicación.
Ejemplo de uso
SingularSDK.ResumeAllTracking();
Método SingularSDK.IsAllTrackingStopped
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
SingularSDK.IsAllTrackingStopped();