Rudderstack - Destino Singular (Modo Dispositivo)

RudderStack es una plataforma de datos de clientes (CDP) de código abierto que permite a las empresas recopilar, unificar y enrutar datos de clientes hacia diversos destinos. Ofrece una plataforma centralizada para gestionar los pipelines de datos de clientes, lo que permite a las organizaciones recopilar fácilmente datos de diversas fuentes, como sitios web, aplicaciones móviles, servidores y servicios en la nube.

El SDK de Singular está disponible como plug-in para Rudderstack, denominado destino "Device-Mode" . Las instrucciones a continuación ilustran cómo agregar el destino Singular en Rudderstack.

Ten en cuenta que esta integración está desarrollada y mantenida por Rudderstack. Consulta con Rudderstack si surgen problemas durante la implementación.

Guía para Equipos de Ingeniería
Requisitos previos Este artículo asume que ya tienes el SDK de Rudderstack para iOS, Android, React Native o Cordova integrado en tu aplicación. Consulta la documentación de Rudderstack para obtener más detalles sobre device-mode y los SDK móviles.

Para usar esta integración, debes estar usando el SDK móvil de Rudderstack para: iOS (Obj-C nativo o Swift), Android (Java o Kotlin), React Native o Cordova. ¡Esta integración NO es compatible con ningún otro framework!

Qué es compatible
  1. Atribución de instalación básica
  2. Compatibilidad con SkAdNetwork
  3. Atribución de Apple Search Ads
  4. Seguimiento de eventos in-app personalizados
  5. Seguimiento de ingresos
  6. ID de usuario personalizado
Qué NO es compatible
  1. Atribución de META Install Referrer
  2. Deep linking
  3. Compatibilidad con Limited Data Sharing

Si necesitas compatibilidad con otro Framework o deseas la "Funcionalidad Completa" que ofrece el SDK de Singular, debes implementar el SDK de Singular de forma independiente de Rudderstack. Consulta las opciones de SDK y los frameworks AQUÍ .

Primeros pasos

  1. Desde tu panel de RudderStack , agrega la fuente. Luego, en la lista de destinos, selecciona Singular .
  2. Asigna un nombre a tu destino y haz clic en Continuar .

Configuración de conexión

Para configurar correctamente Singular como destino, debes configurar los siguientes ajustes:



  • API Key: Ingresa aquí tu "SDK Key" de Singular. Este es un campo obligatorio.
  • Secret: Ingresa tu secret de Singular. Este es un campo obligatorio y es necesario para las integraciones de device mode con los SDK de iOS y Android de RudderStack.

    Obtén tu "SDK KEY" de Singular, que se encuentra en el Singular Dashboard, en "Developer Tools > SDK Integration > SDK Keys" .


    Nota: Para la integración "Cloud-Mode", SOLO ingresarás el valor de API Key (SDK Key) .
    Deja el campo "Secret" en blanco.

  • Session Event Name: Este ajuste solo se aplica al enviar eventos mediante cloud mode.
  • Use device mode to send events: Cuando uses las plataformas Android o iOS, puedes habilitar este ajuste para enviar eventos mediante device mode. Luego, sigue la guía de Device Mode de Singular para conocer los pasos para agregar Singular a tu proyecto.

    Al enviar eventos mediante device mode, RudderStack también te permite especificar qué eventos deben descartarse o dejarse pasar. Para obtener más información, consulta la guía de Client-side Event Filtering .

Agregar la integración de device mode

Después de configurar Singular como destino en RudderStack, sigue estos pasos para agregarlo a tu proyecto, según tu plataforma de integración.

React NativeCordovaiOS Obj-C (Legacy)SDK de iOS v2 (Legacy)Android Java (Legacy)

Para agregar Singular a tu aplicación de React Native, sigue estos pasos:

  1. Agrega el módulo RudderStack-Singular a tu aplicación ejecutando el siguiente comando:

    bash

    npm install @rudderstack/rudder-integration-singular-react-native
    // OR //
    yarn add @rudderstack/rudder-integration-singular-react-native
  2. Abre tu archivo android/build.gradle a nivel de proyecto y agrega el siguiente fragmento:

    groovy

    repositories {
      maven {
        url "https://maven.singular.net/"
      }
    }
    
  3. Importa el módulo anterior y agrégalo a la inicialización de tu SDK:

    typescript

    import rudderClient from "@rudderstack/rudder-sdk-react-native"
    import singular from "@rudderstack/rudder-integration-singular-react-native"
    const config = {
    	dataPlaneUrl: <data_plane_url>,
    	trackAppLifecycleEvents: true,
    	withFactories: [singular],
    }
    rudderClient.setup(<write_key>, config)

Identify

Para las integraciones de device mode, el SDK de Singular usa el método identify de RudderStack para mapear el ID de usuario a su ID de usuario personalizado. RudderStack usa la API setCustomUserId de Singular para reenviar el ID de usuario identificado a Singular.

A continuación se muestra un ejemplo de llamada identify para los SDK de Android e iOS:

iOS (Obj-C) Android (Kotlin)
[[RSClient getInstance] identify:@"1hKOmRA4el9Zt1WSfVJIVo4GRlm"];

Track

La llamada track te permite capturar cualquier acción del usuario y las propiedades asociadas a ella. Cada acción del usuario se considera un evento.

Seguimiento de eventos personalizados

Una llamada track personalizada te permite hacer seguimiento de eventos personalizados a medida que ocurren en tus aplicaciones. RudderStack envía estas llamadas a Singular, donde se procesan como eventos post-instalación personalizados y quedan disponibles en los informes correspondientes.

A continuación se muestra un ejemplo de llamada track personalizada para los SDK de Android e iOS:

iOS (Obj-C) Android (Kotlin)
[[RSClient getInstance] track:@"Product Reviewed" properties:@{
        @"product_id" : @"345676543",
        @"review_id" : @"123454387"
    }];

Seguimiento de ingresos

Singular admite el seguimiento de eventos de ingresos. Implementa el seguimiento de ingresos cada vez que se envía un evento que contiene la propiedad revenue (incluido un valor de cero). Opcionalmente, también puedes pasar el campo currency como un código ISO .

La moneda predeterminada está configurada en USD.

A continuación se muestra un ejemplo de llamada track de revenue :

iOS (Obj-C) Android (Kotlin)
[[RSClient getInstance] track:@"Order Completed" properties:@{
        @"revenue" : @1251,
        @"currency" : @"INR"
    }];

Screen

El método screen te permite registrar cada vez que un usuario ve la pantalla móvil, junto con cualquier propiedad opcional asociada. Esta llamada es similar a la llamada page para aplicaciones web, pero exclusiva de tu dispositivo móvil.

A continuación se muestra un ejemplo de llamada screen para los SDK de Android e iOS:

iOS (Obj-C) Android (Kotlin)
[[RSClient sharedInstance] screen:@"Home" properties:@{
    @"category" : @"launcher"
}];

En el fragmento anterior, RudderStack captura toda la información relacionada con la pantalla visualizada, junto con cualquier información adicional sobre la pantalla.

RudderStack envía el evento screen a Singular como un evento personalizado.

Reset

El método reset restablece la identidad del usuario actual y crea una nueva sesión anónima. Debe llamarse cuando un usuario cierra sesión.

RudderStack llama al método unsetCustomUserId de Singular para restablecer la identidad de un usuario.

A continuación se muestra un ejemplo de llamada reset para los SDK de Android e iOS:

iOS (Obj-C) Android (Kotlin)
[[RSClient getInstance] reset];

Implementación de la compatibilidad con SKAdNetwork (SKAN)

Agrega el siguiente código antes de la inicialización del SDK de iOS para darle el control a Singular sobre tu integración de SKAdNetwork:

Importante:

  • Establecer manualSkanConversionManagement = true requerirá que actualices manualmente tus propios Conversion Values. Esto NO permitirá que el modelo SKAN de Singular actualice los valores de CV en tu nombre. Establécelo en "false" para habilitar el modo "administrado".
  • Establecer waitForTrackingAuthorizationWithTimeoutInterval solo debe usarse si tu aplicación utiliza el prompt de iOS App Tracking Transparency (ATT). Si vas a mostrar ATT, entonces debe establecerse en un valor de 300.

Obj-C

[RudderSingularIntegration setSKANOptions:YES
        isManualSkanConversionManagementMode:NO
withWaitForTrackingAuthorizationWithTimeoutInterval:@300
        withConversionValueUpdatedHandler:^(NSInteger conversionValue){
    // Receive a callback whenever the Conversion Value is updated
    NSLog(@"SKAN handler %ld",conversionValue);
}];