SDK do React Native - Integração básica

Documento

Pré-requisitos

Conclua estas etapas de pré-requisito antes de instalar o Singular SDK do React Native para garantir um processo de integração tranquilo.

Pré-requisitos necessários:

  • Conclua as etapas de planejamento: Siga o guia em Integrando um SDK Singular: Planejamento e pré-requisitos. Essas etapas são obrigatórias para qualquer integração do SDK Singular.
  • Versão do React Native: Verifique sua versão do React Native (0.59+ recomendado para vinculação automática).
  • Usuários da Expo: Se estiver usando a Expo, verifique se você está familiarizado com a personalização do código nativo, pois o SDK requer módulos nativos.

Instalação do SDK

Instalando o pacote SDK

Adicione o Singular SDK do React Native ao seu projeto usando npm. O SDK fornece ligações JavaScript para os SDKs nativos do Singular para iOS e Android.

Instalar via NPM

  1. Abra o terminal: Navegue até o diretório raiz do seu projeto.
  2. Instalar o pacote: Execute o seguinte comando para adicionar o SDK ao seu projeto:
    bash
    npm install singular-react-native --save

Vinculando os módulos nativos

Como você vincula o SDK depende da sua versão do React Native e se você está usando Expo.

  • React Native 0.60+: O SDK é vinculado automaticamente, sem necessidade de etapas adicionais.
  • React Native 0.59 ou anterior: Vincular manualmente o código de ponte nativo:
    bash
    react-native link singular-react-native
  • Projetos da Expo: Depois de instalar o SDK, adicione-o à sua configuração de plug-ins:
    app.json
    {
      "expo": {
        "plugins": ["singular-react-native"]
      }
    }

    Em seguida, reconstrua a sua aplicação utilizando o guia de personalização do código nativo da Expo.


Configuração da plataforma

Configuração do iOS

Conclua a configuração específica do iOS para ativar as dependências do CocoaPods e garantir a funcionalidade adequada do SDK.

Nota: se estiver a construir com a Expo, a configuração do iOS é tratada automaticamente. Ignore esta secção.

Instalar as dependências do CocoaPods

Execute o seguinte comando a partir do diretório raiz do seu projeto para instalar as dependências necessárias do iOS:

bash
cd ios && pod install

Configuração do Android

Configure seus arquivos de compilação do Android para adicionar o repositório Singular Maven, as permissões necessárias e as dependências.

Nota: Se estiver a construir com a Expo, a configuração do Android é tratada automaticamente. Ignore esta secção.

Adicionar repositório Maven

Adicione o repositório Singular Maven ao arquivo build.gradle do seu projeto para habilitar a resolução de dependência do SDK.

project/build.gradle
allprojects {
  repositories {
    maven { url 'https://maven.singular.net/' }
  }
}

Adicionar permissões necessárias

Adicione essas permissões ao seu arquivo AndroidManifest.xml sob a tag <manifest> para habilitar a funcionalidade principal do SDK.

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" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Importante: Exclua a permissão com.google.android.gms.permission.AD_ID se estiver a integrar o SDK para crianças. Esta permissão é necessária para a recolha de GAID em aplicações padrão, mas deve ser omitida para aplicações destinadas a crianças com menos de 13 anos.

Suporte da Samsung Galaxy Store

Para ativar o rastreio de referenciadores de instalação da Samsung Galaxy Store, adicione o seguinte ao seu AndroidManifest.xml:

AndroidManifest.xml
<queries>
   <package android:name="com.sec.android.app.samsungapps" />
</queries>

Dependências transitivas

Se tiver desativado as dependências transitivas para o Singular SDK na sua configuração Gradle, adicione manualmente estas dependências necessárias:

app/build.gradle
dependencies {
    // Required for install referrer tracking
    implementation("com.android.installreferrer:installreferrer:2.2")

    // Required for App Set ID
    implementation("com.google.android.gms:play-services-appset:16.0.0")
}

Configuração do ProGuard

Ao construir APKs de lançamento, o ProGuard (ou R8) pode remover ou ofuscar classes SDK. Adicione estas regras de manutenção para preservar a funcionalidade Singular.

Por que isso é importante: O ProGuard é habilitado por padrão em builds de lançamento do React Native Android. Sem regras de manutenção adequadas, o SDK pode não funcionar corretamente em produção.

  1. Localizar o arquivo ProGuard: Navegue até android/app/proguard-rules.pro em seu projeto.
  2. Adicionar regras de manutenção: Anexe as seguintes regras ao arquivo:
    proguard-rules.pro
    # Preserve Singular SDK classes
    -keep class com.singular.sdk.** { *; }
    
    # Preserve Android Install Referrer library
    -keep public class com.android.installreferrer.** { *; }
    
    # Uncomment if using Singular revenue tracking with Google Play Billing Library
    #-keep public class com.android.billingclient.** { *; }

Integração do SDK

Conformidade com a privacidade: Cumpra as leis de privacidade em suas regiões operacionais, incluindo GDPR, CCPA, COPPA e outras ao implementar o SDK Singular. Consulte Práticas de aceitação e exclusão do SDK.

Observação de compatibilidade: O Singular SDK do React Native v4.0+ dá suporte às arquiteturas herdadas Bridge e TurboModule. Para a maioria dos desenvolvedores, nenhuma migração ou refatoração é necessária: atualize o React Native e/ou o SDK, e tanto o código antigo quanto o novo funcionarão conforme o esperado. Para aproveitar as vantagens das APIs diretas do TurboModule, consulte o novo exemplo de inicialização abaixo.

Importar classes do SDK

Importe as classes do Singular SDK na parte superior do arquivo do seu aplicativo principal (normalmente App.tsx ou App.js).

New ArchitectureOld Architecture

// Direct TurboModule API initialization (React Native 0.76+)

// Import Native API and EventEmitter
import NativeSingular from 'singular-react-native/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';

Inicializar o SDK

Inicialização básica

  1. Obter credenciais: Faça login na sua conta do Singulare navegue até Ferramentas do desenvolvedor > Integração do SDK > Chaves do SDKpara encontrar sua chave e segredo do SDK.
  2. Criar configuração: Instanciar um objeto SingularConfig, ou um objeto simples para a API TurboModule, com as suas credenciais.
  3. Adicionar configuração: Opcionalmente, encadeie métodos de configuração (legado) ou adicione propriedades diretamente no objeto de configuração (TurboModule).
  4. Inicializar o SDK: Chame Singular.init()ou NativeSingular.init() para iniciar o SDK.

Exemplo de inicialização

Inicialize o SDK no ponto de entrada do seu aplicativo, normalmente dentro de um gancho useEffect para garantir que ele seja executado uma vez no início do aplicativo.

New ArchitectureOld Architecture

// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/jsNativeSingular';

export default function App() {
  useEffect(() => {
    const config: SingularConfig = {
      apikey: 'YOUR_SDK_KEY',
      secret: 'YOUR_SDK_SECRET',
      enableLogging: true,
      logLevel: 3,
    };

    NativeSingular.init(config);

  }, []);
  
  return (
    // Your app components
  );
}

API direta do TurboModule:
Ao utilizar a API TurboModule NativeSingular, a configuração é simplificada para um objeto JavaScript simples e uma configuração direta do emissor de eventos. Isso é recomendado apenas para aplicativos voltados para a Nova Arquitetura (React Native 0.76+). Todos os outros aplicativos devem continuar usando o wrapper (SingularConfig/Singular.init) para compatibilidade máxima.

Exemplo de configuração avançada

Configure vários recursos do SDK durante a inicialização encadeando métodos de configuração antes de chamar init().

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';

export default function App() {
  useEffect(() => {
    const config: SingularConfig = {
      apikey: 'YOUR_SDK_KEY',
      secret: 'YOUR_SDK_SECRET',
      customUserId: 'user_123456',
      limitDataSharing: false,
      waitForTrackingAuthorizationWithTimeoutInterval: 300
    };

    NativeSingular.init(config);

    // Register event listener
    const emitter = new NativeEventEmitter(NativeSingular);
    emitter.addListener('SingularLinkHandler', (params) => {
      console.log('Singular: Deep link:', params.deeplink);
      console.log('Singular: Passthrough:', params.passthrough);
      console.log('Singular: Is deferred:', params.isDeferred);
      console.log('Singular: urlParameters:', params.urlParameters);
    });

  }, []);
  
  return (
    // Your app components
  );
}

Referência de configuração: Para obter uma lista completa das opções de configuração disponíveis, consulte a Referência de configuração do SDK do React Native.

Crítico: NÃO use a chave de API do Singular Reporting. Use apenas as credenciais específicas do SDK na página Integração do SDK. O uso de credenciais erradas impede que os dados cheguem ao Singular.