O RudderStack é uma plataforma de dados de clientes (CDP) de código aberto que permite às empresas recolher, unificar e encaminhar dados de clientes para vários destinos. Fornece uma plataforma centralizada para a gestão de pipelines de dados de clientes, permitindo às organizações recolher facilmente dados de várias fontes, tais como websites, aplicações móveis, servidores e serviços na nuvem.
O Singular SDK está disponível como um plug-in para Rudderstack, referido como um destino "Device-Mode". As instruções abaixo ilustram como adicionar o Destino Singular no Rudderstack.
Esteja ciente de que essa integração é criada e mantida pelo Rudderstack. Consulte o Rudderstack se ocorrerem problemas durante a implementação.
Guia para | Equipas de engenharia |
Pré-requisitos | Este artigo pressupõe que você já tenha o SDK do Rudderstack para iOS, Android, React Native ou Cordova integrado ao seu aplicativo. Consulte a documentação do Rudderstack para obter mais detalhes sobre o modo de dispositivo e os SDKs móveis. |
Para usar essa integração, você deve estar usando o SDK móvel do Rudderstack para: iOS (Native Obj-C ou Swift), Android (Java ou Kotlin), React Native ou Cordova. Esta integração NÃO é compatível com qualquer outra estrutura!
- Atribuição de instalação básica
- Suporte para SkAdNetwork
- Atribuição de anúncios de pesquisa da Apple
- Rastreamento de eventos personalizados no aplicativo
- Rastreamento de receita
- ID de utilizador personalizado
- Atribuição de referenciador da instalação META
- Ligação profunda
- Suporte limitado de partilha de dados
Se necessitar de suporte para outras Frameworks ou quiser "Funcionalidade completa" oferecida pelo Singular SDK, deve implementar o Singular SDK independentemente do Rudderstack. Veja as opções de SDK e Frameworks AQUI.
Como começar
- A partir do seu painel RudderStack, adicione a fonte. Em seguida, na lista de destinos, selecione Singular.
- Atribua um nome ao seu destino e clique em Continuar.
Definições de ligação
Para configurar com êxito o Singular como um destino, é necessário configurar as seguintes definições:
- Chave de API: Introduza aqui a sua "Chave SDK" do Singular. Este é um campo obrigatório.
-
Segredo: Introduza o seu segredo Singular. Este é um campo obrigatório e é necessário para integrações de modo de dispositivo com os SDKs iOS e Android do RudderStack.
Obtenha sua "SDK KEY" Singular, encontrada no Painel Singular em "Ferramentas de Desenvolvedor > Integração SDK > SDK Keys".
Nota: Para a integração "Cloud-Mode", só irá introduzir o valor da API Key (SDK Key).
Deixe o "Segredo" em branco. - Nome do evento da sessão: Esta definição só é aplicável ao envio de eventos através do modo de nuvem.
-
Utilizar o modo de dispositivo para enviar eventos: Ao utilizar as plataformas Android ou iOS, pode ativar esta definição para enviar eventos através do modo de dispositivo. Em seguida, siga o guia Modo de dispositivo Singular para obter etapas sobre como adicionar o Singular ao seu projeto.
Ao enviar eventos através do modo de dispositivo, o RudderStack também lhe permite especificar quais os eventos que devem ser descartados ou autorizados a fluir. Para obter mais informações, consulte o guia Filtragem de eventos do lado do cliente.
Adicionando integração do modo de dispositivo
Depois de configurar o Singular como um destino no RudderStack, siga estas etapas para adicioná-lo ao seu projeto, dependendo da sua plataforma de integração.
Para adicionar o Singular ao seu aplicativo iOS, siga estas etapas:
-
No seu Podfile, adicione as seguintes dependências:
ruby
pod 'Singular-SDK', '11.0.4' pod 'Rudder-Singular', '1.0.0'
-
Depois de adicionar as dependências seguidas do comando pod install, adicione as seguintes importações ao seu ficheiro AppDelegate.m:
Obj-C
//Objective-C
#import <rudder> #import <ruddersingularfactory.h> -
Inicialize o seu 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 integração do modo de dispositivo é suportada para o Singular v11.0.4 e superior.
Siga estas etapas para adicionar o Singular ao seu projeto iOS:
-
Instale o RudderSingular (disponível através do CocoaPods) adicionando a seguinte linha ao seu Podfile:
pod 'RudderSingular', '~ 1.0.0'
-
Depois de adicionar as dependências seguidas do comando pod install, adicione as importações ao seu ficheiro AppDelegate, dependendo da sua plataforma preferida:
Swift
import RudderSingular
Obj-C
@import RudderSingular;
-
No seu ficheiro AppDelegate, actualize o método didFinishLaunchingWithOptions:
Importante:
- Definir manualSkanConversionManagement = true exigirá que você atualize manualmente seus próprios valores de conversão. Isso NÃO permitirá que o modelo SKAN da Singular atualize os valores de CV em seu nome. Defina esta opção como "false" para ativar o modo "gerido".
- A configuração de waitForTrackingAuthorizationWithTimeoutInterval só deve ser usada se seu aplicativo usar o prompt iOS App Tracking Transparency (ATT). Se estiver a apresentar o ATT, então este deve ser definido para um valor de 300.
Mudar
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 adicionar o Singular ao seu aplicativo Android, siga estas etapas:
-
Abra o arquivo app/build.gradle (Module: app) e adicione o seguinte na seção de dependências:
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'
-
Adicione o plug-in Singular Maven ao seu script de compilação. Para fazer isso, adicione o seguinte snippet na seção Gradle Scripts do seu build.gradle raiz:
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/' } } }
-
Adicione as seguintes permissões (se ainda não estiverem presentes) ao seu AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
-
Por fim, inicialize o SDK RudderStack no método onCreate() da sua classe Application:
// initialize Rudder SDK val rudderClient = RudderClient.getInstance( this, WRITE_KEY, RudderConfig.Builder() .withDataPlaneUrl(DATA_PLANE_URL) .withFactory(SingularIntegrationFactory.FACTORY) .build() )
Para adicionar o Singular ao seu aplicativo React Native, siga estas etapas:
-
Adicione o módulo RudderStack-Singular ao seu aplicativo executando o seguinte comando:
bash
npm install @rudderstack/rudder-integration-singular-react-native // OR // yarn add @rudderstack/rudder-integration-singular-react-native
-
Abra o arquivo android/build.gradle no nível do projeto e adicione o seguinte snippet:
groovy
repositories { maven { url "https://maven.singular.net/" } }
-
Importe o módulo acima e adicione-o à inicialização do 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 adicionar o Singular ao seu aplicativo Cordova, siga estas etapas:
-
Navegue até a pasta raiz do seu aplicativo e execute o seguinte comando:
bash
cordova plugin add rudder-integration-singular-cordova
-
Adicione o seguinte código na função onDeviceReady() da página inicial do seu aplicativo para inicializar o SDK:
javascript
RudderClient.initialize(<write_key>, { dataPlaneUrl: <data_plane_url>, factories: [RudderSingularFactory] })
Importante: Certifique-se de usar a palavra-chave `await` com a chamada `initialize`.
Identificar
Para integrações de modo de dispositivo, o SDK Singular usa o método de identificação do RudderStack para mapear a ID do usuário para sua ID de usuário personalizada. O RudderStack usa a API setCustomUserId do Singular para encaminhar o ID de usuário identificado para o Singular.
Um exemplo de chamada de identificação para os SDKs Android e iOS é mostrado abaixo:
[[RSClient getInstance] identify:@"1hKOmRA4el9Zt1WSfVJIVo4GRlm"];
RudderClient.getInstance()?.identify("1hKOmRA4el9Zt1WSfVJIVo4GRlm")
Rastrear
A chamada track permite capturar quaisquer ações do usuário e as propriedades associadas a elas. Cada ação do utilizador é considerada um evento.
Acompanhamento de eventos personalizados
Uma chamada de rastreamento personalizada permite rastrear eventos personalizados à medida que eles ocorrem em seus aplicativos. O RudderStack envia essas chamadas para o Singular, onde elas são processadas como eventos personalizados pós-instalação e são disponibilizadas nos relatórios relevantes.
Um exemplo de chamada de rastreamento personalizado para os SDKs Android e iOS é mostrado abaixo:
[[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")
)
Rastreamento de receita
O Singular suporta o rastreamento de eventos de receita. Ele implementa o rastreamento de receita sempre que um evento contendo a propriedade receita é enviado (incluindo um valor zero). Opcionalmente, também é possível passar o campo de moeda como um código ISO.
A moeda padrão é definida como USD.
Um exemplo de chamada de rastreio de receitas é apresentado abaixo:
[[RSClient getInstance] track:@"Order Completed" properties:@{
@"revenue" : @1251,
@"currency" : @"INR"
}];
RudderClient.getInstance()
?.track(
"Order Completed",
RudderProperty().putValue("revenue", 1251).putValue("currency", "INR")
)
Ecrã
O método screen permite-lhe registar sempre que um utilizador vê o ecrã do telemóvel, juntamente com quaisquer propriedades opcionais associadas. Esta chamada é semelhante à chamada de página para as aplicações Web, mas exclusiva para o seu dispositivo móvel.
Segue-se um exemplo de chamada de ecrã para os SDK Android e iOS:
[[RSClient sharedInstance] screen:@"Home" properties:@{
@"category" : @"launcher"
}];
RudderClient.getInstance()
?.screen(
"Home",
RudderProperty().putValue("category", "launcher")
)
No excerto acima, o RudderStack captura todas as informações relacionadas com o ecrã visualizado, juntamente com quaisquer informações adicionais sobre o ecrã.
O RudderStack envia o evento de ecrã para o Singular como um evento personalizado.
Reiniciar
O método reset redefine a identidade do utilizador atual e cria uma nova sessão anónima. Deve ser chamado quando um utilizador termina a sessão.
RudderStack chama o método unsetCustomUserId do Singular para redefinir a identidade de um usuário.
Um exemplo de chamada de redefinição para os SDKs Android e iOS é mostrado abaixo:
[[RSClient getInstance] reset];
RudderClient.getInstance()?.reset();
Implementação do suporte SKAdNetwork (SKAN)
Adicione o código a seguir antes da inicialização do SDK do iOS para dar o controle ao Singular para sua integração com a SKAdNetwork:
Importante:
- Definir manualSkanConversionManagement = true exigirá que você atualize manualmente seus próprios valores de conversão. Isso NÃO permitirá que o modelo SKAN da Singular atualize os valores de CV em seu nome. Defina esta opção como "false" para ativar o modo "gerido".
- A configuração de waitForTrackingAuthorizationWithTimeoutInterval só deve ser usada se seu aplicativo usar o prompt iOS App Tracking Transparency (ATT). Se estiver a apresentar ATT, deve ser definido para um 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);
}];