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!
- Atribución de instalación básica
- Compatibilidad con SkAdNetwork
- Atribución de Apple Search Ads
- Seguimiento de eventos in-app personalizados
- Seguimiento de ingresos
- ID de usuario personalizado
- Atribución de META Install Referrer
- Deep linking
- 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
- Desde tu panel de RudderStack , agrega la fuente. Luego, en la lista de destinos, selecciona Singular .
- 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.
Para agregar Singular a tu aplicación de React Native, sigue estos pasos:
-
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 -
Abre tu archivo android/build.gradle a nivel de proyecto y agrega el siguiente fragmento:
groovy
repositories { maven { url "https://maven.singular.net/" } } -
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)
Para agregar Singular a tu aplicación de Cordova, sigue estos pasos:
-
Navega a la carpeta raíz de tu aplicación y ejecuta el siguiente comando:
bash
cordova plugin add rudder-integration-singular-cordova -
Agrega el siguiente código en la función onDeviceReady() de la página de inicio de tu aplicación para inicializar el SDK:
javascript
RudderClient.initialize(<write_key>, { dataPlaneUrl: <data_plane_url>, factories: [RudderSingularFactory] })Importante: Asegúrate de usar la palabra clave `await` con la llamada `initialize` .
Para agregar Singular a tu aplicación de iOS, sigue estos pasos:
-
En tu Podfile , agrega las siguientes dependencias:
ruby
pod 'Singular-SDK', '11.0.4' pod 'Rudder-Singular', '1.0.0' -
Después de agregar las dependencias, seguido del comando pod install , agrega los siguientes imports a tu archivo AppDelegate.m :
Obj-C
//Objective-C
#import <rudder> #import <ruddersingularfactory.h> -
Inicializa tu RSClient :
Obj-C
//Objective-C
RSConfigBuilder *configBuilder = [[RSConfigBuilder alloc] init]; [configBuilder withDataPlaneUrl:<data_plane_url>]; [configBuilder withFactory:[RudderSingularFactory instance]]; RSClient *rudderClient = [RSClient getInstance:<write_key> config:[configBuilder build]];
Esta integración de device mode es compatible con Singular v11.0.4 y versiones posteriores.
Sigue estos pasos para agregar Singular a tu proyecto de iOS:
-
Instala RudderSingular (disponible a través de CocoaPods ) agregando la siguiente línea a tu Podfile :
pod 'RudderSingular', '~> 1.0.0' -
Después de agregar las dependencias, seguido del comando pod install , agrega los imports a tu archivo AppDelegate según la plataforma que prefieras:
Swift
import RudderSingularObj-C
@import RudderSingular; -
En tu archivo AppDelegate, actualiza el método didFinishLaunchingWithOptions:
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.
Swift
let config: RSConfig = RSConfig(writeKey: WRITE_KEY) .dataPlaneURL(DATA_PLANE_URL) RSClient.sharedInstance().configure(with: config) let rudderSingularConfig = RudderSingularConfig() .skAdNetworkEnabled(true) .manualSkanConversionManagement(true) .conversionValueUpdatedCallback({ value in print("Your SKAN handler \(value)") }) .waitForTrackingAuthorizationWithTimeoutInterval(300) RSClient.sharedInstance().addDestination(RudderSingularDestination(rudderSingularConfig: rudderSingularConfig))Obj-C
RSConfig *config = [[RSConfig alloc] initWithWriteKey:WRITE_KEY]; [config dataPlaneURL:DATA_PLANE_URL]; [[RSClient sharedInstance] configureWith:config]; RudderSingularConfig *rudderSingularConfig = [[RudderSingularConfig alloc] init]; [rudderSingularConfig skAdNetworkEnabled:YES]; [rudderSingularConfig manualSkanConversionManagement:YES]; [rudderSingularConfig conversionValueUpdatedCallback:^(NSInteger value) { printf("Your SKAN handler %ld", value); }]; [rudderSingularConfig waitForTrackingAuthorizationWithTimeoutInterval:300]; [[RSClient sharedInstance] addDestination:[[RudderSingularDestination alloc] initWithRudderSingularConfig:rudderSingularConfig]];
Para agregar Singular a tu aplicación de Android, sigue estos pasos:
-
Abre tu archivo app/build.gradle (Module: app ) y agrega lo siguiente en la sección dependencies :
groovy
implementation 'com.rudderstack.android.sdk:core:[1.0,2.0)' implementation 'com.rudderstack.android.integration:singular:1.0.0' implementation 'com.google.code.gson:gson:2.8.6' -
Agrega el plugin de Singular Maven a tu script de compilación. Para hacerlo, agrega el siguiente fragmento en la sección Gradle Scripts de tu build.gradle raíz:
groovy
buildscript { repositories { google() mavenCentral() maven { url 'https://maven.singular.net/' } } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' } } allprojects { repositories { google() mavenCentral() maven { url 'https://maven.singular.net/' } } } -
Agrega los siguientes permisos (si aún no están presentes) a tu AndroidManifest.xml :
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> -
Por último, inicializa el SDK de RudderStack en el método onCreate() de la clase Application :
// initialize Rudder SDK val rudderClient = RudderClient.getInstance( this, WRITE_KEY, RudderConfig.Builder() .withDataPlaneUrl(DATA_PLANE_URL) .withFactory(SingularIntegrationFactory.FACTORY) .build() )
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:
[[RSClient getInstance] identify:@"1hKOmRA4el9Zt1WSfVJIVo4GRlm"];
RudderClient.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:
[[RSClient getInstance] track:@"Product Reviewed" properties:@{
@"product_id" : @"345676543",
@"review_id" : @"123454387"
}];
RudderClient.getInstance()
?.track(
"Product Reviewed",
RudderProperty()
.putValue("product_id", "345676543")
.putValue("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 :
[[RSClient getInstance] track:@"Order Completed" properties:@{
@"revenue" : @1251,
@"currency" : @"INR"
}];
RudderClient.getInstance()
?.track(
"Order Completed",
RudderProperty().putValue("revenue", 1251).putValue("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:
[[RSClient sharedInstance] screen:@"Home" properties:@{
@"category" : @"launcher"
}];
RudderClient.getInstance()
?.screen(
"Home",
RudderProperty().putValue("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:
[[RSClient getInstance] reset];
RudderClient.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);
}];