Pré-requisitos
Conclua estes passos pré-requisitos antes de instalar o Singular SDK do React Native para garantir um processo de integração sem problemas.
Pré-requisitos necessários:
- Concluir as etapas de planeamento: Siga o guia em Integrar um SDK da Singular: Planeamento e Pré-requisitos. Estas etapas são obrigatórias para qualquer integração do SDK da Singular.
- Versão do React Native: Verifique a sua versão do React Native (recomenda-se 0.59+ para ligação automática).
- Utilizadores do Expo: Se estiver a utilizar o Expo, certifique-se de que está familiarizado com a personalização de código nativo, uma vez que o SDK requer módulos nativos.
Instalação
Instalação do pacote SDK
Adicione o SDK Singular React Native ao seu projeto utilizando o npm. O SDK fornece ligações JavaScript aos SDKs nativos da Singular para iOS e Android.
Instalar via NPM
- Abra o terminal: Navegue até ao diretório raiz do seu projeto.
-
Instalar o pacote: Execute o seguinte comando para
adicionar
o SDK ao seu projeto:
npm install singular-react-native --save
Ligar os módulos nativos
A forma como liga o SDK depende da sua versão do React Native e se está a utilizar o Expo.
- React Native 0.60+: O SDK vincula-se automaticamente. Não são necessárias etapas adicionais.
-
React Native 0.59 ou anterior: Vincule manualmente
o
código da ponte nativa:
react-native link singular-react-native -
Projetos Expo: Após instalar o SDK, adicione-o
à sua configuração de plugins:
{ "expo": { "plugins": ["singular-react-native"] } }Em seguida, recompile a sua aplicação utilizando o guia de personalização de código nativo do 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 o funcionamento adequado do SDK.
Nota: Se estiver a compilar com o 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 iOS necessárias:
cd ios && pod install
Configuração do Android
Configure os seus ficheiros 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 compilar com o Expo, a configuração do Android é tratada automaticamente. Ignore esta secção.
Adicionar repositório Maven
Adicione o repositório Maven da Singular ao ficheiro
build.gradle do seu projeto para ativar a
resolução de dependências do SDK.
allprojects {
repositories {
maven { url 'https://maven.singular.net/' }
}
}
Adicionar permissões necessárias
Adicione estas permissões ao seu ficheiro
AndroidManifest.xml sob
a tag <manifest> para ativar a funcionalidade
principal do SDK.
<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
Kids SDK.
Esta permissão é necessária para a recolha do 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 rastreamento de referência de instalação da Samsung Galaxy
Store, adicione o
seguinte ao seu AndroidManifest.xml:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Dependências transitivas
Se desativou as dependências transitivas para o Singular SDK na sua configuração do Gradle, adicione manualmente estas dependências necessárias:
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 compilar APKs de lançamento, o ProGuard (ou R8) pode remover ou ofuscar classes do SDK . Adicione estas regras de retenção para preservar a funcionalidade do Singular.
Por que isto é importante: O ProGuard está ativado por predefinição nas compilações de lançamento do React Native para Android. Sem regras de preservação adequadas, o SDK poderá não funcionar corretamente em produção.
-
Localize o ficheiro do ProGuard: Navegue até
android/app/proguard-rules.prono seu projeto. -
Adicione regras de preservação: acrescente as seguintes
regras ao
ficheiro:
# 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 nas suas regiões de operação, incluindo o RGPD, a CCPA, a COPPA e outras ao implementar o SDK da Singular. Consulte Práticas de aceitação e recusa do SDK.
Nota de compatibilidade: O SDK Singular React Native v4.0+ suporta tanto as arquiteturas Bridge como TurboModule. Para a maioria dos programadores, não é necessária qualquer migração ou refatoração: atualize o React Native e/ou o SDK, e tanto o código antigo como o novo funcionarão conforme esperado. Para tirar partido das APIs TurboModule diretas, consulte o novo exemplo de inicialização abaixo.
Importar classes do SDK
Importe as classes do SDK da Singular no início do seu ficheiro principal
da aplicação
(normalmente App.tsx ou
App.js).
// Direct TurboModule API initialization (React Native 0.76+)
// Import Native API and EventEmitter
import NativeSingular from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';
import Singular, { SingularConfig } from 'singular-react-native';
Inicializar o SDK
Inicialização básica
- Obter credenciais: Inicie sessão na sua con ta Singular e navegue até Ferramentas do Desenvolvedor > Integração do SDK > Chaves do SDK para encontrar a sua Chave e Segredo do SDK.
-
Criar configuração: Instancie um
objeto
SingularConfig, ou um objeto simples para a API do TurboModule, com as suas credenciais. - Adicione a configuração: Opcionalmente, encadeie métodos de configuração (legado) ou adicione propriedades diretamente no objeto de configuração (TurboModule).
-
Inicializar SDK: Chame
Singular.init()ouNativeSingular.init()para iniciar o SDK.
Exemplo de inicialização
Inicialize o SDK no ponto de entrada da sua aplicação, normalmente dentro
de um
gancho useEffect para garantir que é executado
uma vez no arranque da aplicação.
// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/js/NativeSingular';
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
);
}
import React, { useEffect } from 'react';
import Singular, { SingularConfig } from 'singular-react-native';
export default function App() {
useEffect(() => {
const config = new SingularConfig('YOUR_SDK_KEY', 'YOUR_SDK_SECRET')
.withLoggingEnabled()
.withLogLevel(3);
Singular.init(config);
}, []);
return (
// Your app components
);
}
API direta do TurboModule:
Ao utilizar a API NativeSingular do TurboModule,
a configuração
é simplificada para um objeto JavaScript simples e uma configuração
direta do emissor de eventos
. Isto é recomendado apenas para aplicações destinadas à Nova Arquitetura
(React Native 0.76+). Todas as outras aplicações devem continuar
a utilizar o wrapper
(SingularConfig/Singular.init) para máxima compatibilidade.
Exemplo de configuração avançada
Configure várias funcionalidades do SDK durante a inicialização, encadeando
métodos de configuração
antes de chamar init().
// TurboModule direct API (React Native 0.76+ New Architecture)
import React, { useEffect } from 'react';
import NativeSingular from 'singular-react-native/js/NativeSingular';
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
);
}
import React, { useEffect } from 'react';
import { Singular, SingularConfig } from 'singular-react-native';
export default function App() {
useEffect(() => {
const config = new SingularConfig(
'YOUR_SDK_KEY',
'YOUR_SDK_SECRET'
)
// User identification
.withCustomUserId('user_123456')
// Privacy settings
.withLimitDataSharing(false)
// Deep linking
.withSingularLink((params: SingularLinkParams) => {
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);
})
// iOS-specific
.withWaitForTrackingAuthorizationWithTimeoutInterval(300)
// Debugging
.withLoggingEnabled()
.withLogLevel(3);
Singular.init(config);
}, []);
return (
// Your app components
);
}
Referência de configuração: Para uma lista completa das opções de configuração disponíveis, consulte a Referência de configuração do SDK React Native.
Crítico: NÃO utilize a chave da API de Relatórios da Singular . Utilize apenas as credenciais específicas do SDK disponíveis na página de Integração do SDK . A utilização de credenciais erradas impede que os dados cheguem à Singular.
Configuração avançada
Necessário para a medição de conversão integrada do Google Ads no iOS
Se a sua aplicação executa campanhas do Google Ads direcionadas a utilizadores do iOS 14.5+, são necessárias etapas adicionais de configuração do SDK para suportar a Medição de Conversão Integrada do iOS (ICM). Isto inclui:
- Integrar o SDK de Medição no Dispositivo (ODM) do Google
- Atualização para o SDK do Singular para iOS v12.8.1+ (ou v5.5.0+ para Unity, v1.8.0+ para Flutter/Cordova, v3.9.0+ para React Native)
-
Adicionar o sinalizador do ligador «
-ObjC» e ativar «enableOdmWithTimeoutInterval» emSingularConfig
Nota: A ativação de
enableOdmWithTimeoutInterval
atrasa a inicialização do SDK
e pode adiar os callbacks de deep links. Conclua esta configuração
durante a implementação inicial do SDK para evitar trabalho adicional.
Consulte os requisitos técnicos completos do iOS ICM