Requisitos previos
Complete estos pasos de requisitos previos antes de instalar Singular SDK de React Native para garantizar un proceso de integración sin problemas.
Requisitos previos obligatorios:
- Completar los pasos de planificación: Sigue la guía de Integración de un SDK Singular: Planificación y Requisitos Previos. Estos pasos son obligatorios para cualquier integración de Singular SDK.
- Versión de React Native: Verifica tu versión de React Native (se recomienda 0.59+ para la vinculación automática).
- Usuarios de Expo: Si utiliza Expo, asegúrese de que está familiarizado con la personalización de código nativo, ya que el SDK requiere módulos nativos.
Instalación
Instalación del paquete SDK
Añada el SDK Singular React Native a su proyecto utilizando npm. El SDK proporciona enlaces JavaScript a los SDK nativos de Singular para iOS y Android.
Instalación a través de NPM
- Abra el terminal: Navega al directorio raíz de tu proyecto.
-
Instale el paquete: Ejecute el siguiente comando para añadir el SDK a su proyecto:
npm install singular-react-native --save
Vinculación de los módulos nativos
La forma de vincular el SDK depende de tu versión de React Native y de si estás utilizando Expo.
- React Native 0.60+: El SDK se enlaza automáticamente, no requiere pasos adicionales.
-
React Native 0.59 o anterior: Vincula manualmente el código puente nativo:
react-native link singular-react-native -
Proyectos Expo: Después de instalar el SDK, añádelo a tu configuración de plugins:
{ "expo": { "plugins": ["singular-react-native"] } }A continuación, reconstruya su aplicación utilizando la guía de personalización del código nativo de Expo.
Configuración de la plataforma
Configuración de iOS
Complete la configuración específica de iOS para habilitar las dependencias de CocoaPods y garantizar la correcta funcionalidad del SDK.
Nota: Si está creando con Expo, la configuración de iOS se realiza automáticamente. Omita esta sección.
Instalación de las dependencias de CocoaPods
Ejecute el siguiente comando desde el directorio raíz del proyecto para instalar las dependencias de iOS necesarias:
cd ios && pod install
Configuración de Android
Configure los archivos de compilación de Android para añadir el repositorio de Singular Maven, los permisos necesarios y las dependencias.
Nota: Si está construyendo con Expo, la configuración de Android se gestiona automáticamente. Omita esta sección.
Añadir repositorio Maven
Añade el repositorio de Singular Maven al archivo build.gradle de tu proyecto para habilitar la resolución de dependencias del SDK.
allprojects {
repositories {
maven { url 'https://maven.singular.net/' }
}
}
Añadir permisos requeridos
Añada estos permisos a su archivo AndroidManifest.xml bajo la etiqueta <manifest> para habilitar la funcionalidad central del 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: Excluya el permiso com.google.android.gms.permission.AD_ID si está integrando el SDK para niños. Este permiso es necesario para la recopilación de GAID en aplicaciones estándar, pero debe omitirse para aplicaciones dirigidas a niños menores de 13 años.
Compatibilidad con Samsung Galaxy Store
Para habilitar el seguimiento de referencias de instalación desde Samsung Galaxy Store, añada lo siguiente a su sitio AndroidManifest.xml:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Dependencias transitivas
Si ha desactivado las dependencias transitivas para Singular SDK en la configuración de Gradle, añada manualmente estas dependencias necesarias:
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")
}
Configuración de ProGuard
Al crear APK de lanzamiento, ProGuard (o R8) puede eliminar u ocultar clases del SDK. Añada estas reglas de conservación para preservar la funcionalidad de Singular.
Por qué es importante: ProGuard está activado por defecto en las versiones de React Native para Android. Sin las reglas de conservación adecuadas, es posible que el SDK no funcione correctamente en producción.
-
Localice el archivo ProGuard: Vaya a
android/app/proguard-rules.proen su proyecto. -
Añada reglas de conservación: Añada las siguientes reglas al archivo:
# 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.** { *; }
Integración SDK
Cumplimiento de la privacidad: Cumpla con las leyes de privacidad en sus regiones operativas, incluidas GDPR, CCPA, COPPA y otras al implementar Singular SDK. Consulte Prácticas de inclusión y exclusión voluntarias del SDK.
Nota de compatibilidad: Singular SDK de React Native v4.0+ es compatible con las arquitecturas Bridge y TurboModule heredadas. Para la mayoría de los desarrolladores, no se requiere migración o refactorización: actualice React Native y/o el SDK, y tanto el código antiguo como el nuevo funcionarán como se espera. Para aprovechar las APIs directas de TurboModule, consulte el nuevo ejemplo de inicialización a continuación.
Importar clases SDK
Importe las clases del SDK de Singular en la parte superior de su archivo de aplicación principal (normalmente App.tsx o App.js).
// 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';
import Singular, { SingularConfig } from 'singular-react-native';
Inicializar el SDK
Inicialización básica
- Obtenga las credenciales: Inicie sesión en su cuenta de Singulary vaya a Herramientas de desarrollador > Integración de SDK > Claves de SDKpara encontrar su clave y secreto de SDK.
-
Cree la configuración: Instancie un objeto
SingularConfig, o un objeto plano para la API TurboModule, con sus credenciales. - Añadir configuración: Opcionalmente encadene métodos de configuración (legacy) o añada propiedades directamente en el objeto config (TurboModule).
-
Inicializar SDK: Llame a
Singular.init()oNativeSingular.init()para iniciar el SDK.
Ejemplo de inicialización
Inicialice el SDK en el punto de entrada de su aplicación, normalmente dentro de un hook useEffect para asegurarse de que se ejecuta una vez al iniciar la aplicación.
// 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
);
}
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 directa de TurboModule:
Cuando se utiliza la API TurboModule de NativeSingular, la configuración se simplifica a un objeto JavaScript simple y una configuración directa del emisor de eventos. Esto se recomienda sólo para aplicaciones orientadas a la Nueva Arquitectura (React Native 0.76+). Todas las demás aplicaciones deben seguir utilizando la envoltura (SingularConfig/Singular.init) para obtener la máxima compatibilidad.
Ejemplo de configuración avanzada
Configure múltiples características del SDK durante la inicialización encadenando métodos de configuración antes de llamar a init().
// 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
);
}
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
);
}
Referencia de configuración: Para obtener una lista completa de las opciones de configuración disponibles, consulta la Referencia de configuración del SDK de React Native.
Crítico: NO utilice la clave de API de Singular Reporting. Utilice únicamente las credenciales específicas del SDK de la página SDK Integration. El uso de credenciales incorrectas impide que los datos lleguen a Singular.