Requisitos previos
Completa estos pasos previos antes de instalar el SDK de Singular para React Native para garantizar un proceso de integración fluido.
Requisitos previos obligatorios:
- Completar los pasos de planificación: Sigue la guía de Integración de un SDK de Singular: Planificación y requisitos previos. Estos pasos son obligatorios para cualquier integración del SDK de Singular.
- Versión de React Native: comprueba tu versión de React Native (se recomienda 0.59+ para el enlace automático).
- Usuarios de Expo: si utiliza Expo, asegúrese de estar familiarizado con la personalización del código nativo, ya que el SDK requiere módulos nativos.
Instalación
Instalación del paquete del SDK
Añade el SDK de Singular para React Native a tu proyecto mediante npm. El SDK proporciona enlaces JavaScript a los SDK nativos de Singular para iOS y Android.
Instalación mediante NPM
- Abre el terminal: ve al directorio raíz de tu proyecto.
-
Instalar el paquete: Ejecuta el siguiente comando
para añadir
el SDK a tu 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 vincula automáticamente. No se requieren pasos adicionales.
-
React Native 0.59 o anterior: Vincula manualmente
el
código del puente nativo:
react-native link singular-react-native -
Proyectos de Expo: Después de instalar el SDK, añádelo
a la configuración de tus plugins:
{ "expo": { "plugins": ["singular-react-native"] } }A continuación, vuelve a compilar tu aplicación siguiendo la guía de personalización del código nativo de Expo.
Configuración de la plataforma
Configuración de iOS
Completa la configuración específica de iOS para habilitar las dependencias de CocoaPods y garantizar el correcto funcionamiento del SDK.
Nota: Si estás compilando con Expo, la configuración de iOS se gestiona automáticamente. Omite esta sección.
Instala las dependencias de CocoaPods
Ejecuta el siguiente comando desde el directorio raíz de tu proyecto para instalar las dependencias de iOS necesarias:
cd ios && pod install
Configuración de Android
Configura tus archivos de compilación de Android para añadir el repositorio Singular Maven, los permisos necesarios y las dependencias.
Nota: Si estás compilando con Expo, la configuración de Android se gestiona automáticamente. Omite esta sección.
Añadir el repositorio de Maven
Añade el repositorio Maven de Singular 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 los permisos necesarios
Añade estos permisos al archivo
AndroidManifest.xml de tu proyecto bajo
la etiqueta <manifest> para habilitar
la funcionalidad básica 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 en aplicaciones dirigidas a menores de 13 años.
Compatibilidad con Samsung Galaxy Store
Para habilitar el seguimiento de referencias de instalación desde Samsung
Galaxy Store, añade lo
siguiente a tu AndroidManifest.xml:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Dependencias transitivas
Si ha desactivado las dependencias transitivas para el SDK de Singular en su 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 compilar APK de lanzamiento, ProGuard (o R8) puede eliminar u ofuscar las clases del SDK . Añade estas reglas de retención para preservar la funcionalidad de Singular.
Por qué es importante: ProGuard está habilitado de forma predeterminada en las compilaciones de lanzamiento de React Native para Android. Sin las reglas de conservación adecuadas, es posible que el SDK no funcione correctamente en producción.
-
Localiza el archivo de ProGuard: ve a
android/app/proguard-rules.proen tu proyecto. -
Añade reglas de retención: añade 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 del SDK
Cumplimiento de la normativa de privacidad: Cumpla con las leyes de privacidad de sus regiones de operación, incluyendo el RGPD, la CCPA, la COPPA y otras, al implementar el SDK de Singular. Consulte las prácticas de activación y desactivación del SDK.
Nota de compatibilidad: El SDK de Singular para React Native v4.0+ es compatible tanto con las arquitecturas heredadas Bridge como con TurboModule. Para la mayoría de los desarrolladores, no se requiere migración ni refactorización: actualice React Native y/o el SDK, y tanto el código antiguo como el nuevo funcionarán según lo esperado. Para aprovechar las API directas de TurboModule, consulte el nuevo ejemplo de inicialización a continuación.
Importar clases del SDK
Importe las clases del SDK de Singular al principio del archivo principal
de su aplicación
(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/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';
import Singular, { SingularConfig } from 'singular-react-native';
Inicializar el SDK
Inicialización básica
- Obtener credenciales: Inicie sesión en su cuenta de Singular y vaya a Herramientas para desarrolladores > Integración del SDK > Claves del SDK para encontrar su clave y secreto del SDK.
-
Crear configuración: Instancia un
objeto
SingularConfig, o un objeto simple para la API de TurboModule, con tus credenciales. - Añadir configuración: Opcionalmente, encadena métodos de configuración (heredados) o añade propiedades directamente en el objeto de configuración (TurboModule).
-
Inicializar el SDK: Llama a
Singular.init()o aNativeSingular.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
gancho useEffect para garantizar que se ejecute
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/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 directa de TurboModule:
Al utilizar la API de TurboModule de
NativeSingular, la configuración
se simplifica a un objeto JavaScript simple y a la configuración
directa del emisor de eventos
. Esto se recomienda solo para aplicaciones dirigidas a la Nueva
Arquitectura
(React Native 0.76+). Todas las demás aplicaciones deben seguir utilizando
el envoltorio
(SingularConfig/Singular.init) para obtener la máxima compatibilidad.
Ejemplo de configuración avanzada
Configure múltiples funciones 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/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
);
}
Referencia de configuración: Para obtener una lista completa de las opciones de configuración disponibles, consulte la Referencia de configuración del SDK de React Native.
Importante: NO utilice la clave de la API de Singular Reporting . Utilice únicamente las credenciales específicas del SDK que se indican en la página de integración del SDK . El uso de credenciales incorrectas impide que los datos lleguen a Singular.
Configuración avanzada
Requisitos para la medición de conversiones integrada de Google Ads en iOS
Si su aplicación ejecuta campañas de Google Ads dirigidas a usuarios de iOS 14.5 o superior, se requieren pasos de configuración adicionales del SDK para admitir la medición de conversiones integrada de iOS (ICM). Esto incluye:
- Integrar el SDK de medición en el dispositivo (ODM) de Google
- Actualización al SDK de Singular para iOS v12.8.1+ (o v5.5.0+ para Unity, v1.8.0+ para Flutter/Cordova, v3.9.0+ para React Native)
-
Añadir el indicador del enlazador «
-ObjC» y habilitar «enableOdmWithTimeoutInterval» enSingularConfig
Nota: Al habilitar
enableOdmWithTimeoutInterval
se retrasa la inicialización del SDK
y puede aplazarse la recepción de callbacks de enlaces profundos. Realice
esta configuración
durante la implementación inicial del SDK para evitar tener que volver
a trabajar en ello.
Consulte los requisitos técnicos completos de ICM para iOS