Guía de integración básica del SDK de Expo
Esta sección contiene información sobre cómo integrar el SDK de Expo de Pushwoosh en su aplicación.
Prerrequisitos
Anchor link toPara integrar el SDK de Expo de Pushwoosh en su aplicación, necesitará lo siguiente:
Pasos de integración
Anchor link to1. Instale el plugin
Anchor link toInstale el plugin de Expo de Pushwoosh usando la CLI de Expo
expo install pushwoosh-expo-pluginInstale el SDK de React Native de Pushwoosh
npm install pushwoosh-react-native-plugin --save2. Establezca las propiedades del plugin
Anchor link toAgregue el plugin al principio del array de plugins con las propiedades necesarias:
{ "expo": { "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ] }}Donde:
modese utiliza para configurar el entitlement del entorno de APNs. Están disponibles los valores “Development” o “production”.PW_API_TOKEN,apiTokenes su token de la API de dispositivo de Pushwoosh.
3. Inicialice Pushwoosh
Anchor link toEn el componente raíz de su aplicación:
- Importe el plugin
pushwoosh-react-native-plugin. - Inicialice el SDK de Pushwoosh.
- Llame a
register()en su lógica de inicialización para registrarse para las notificaciones push.
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__"});
Pushwoosh.register();Donde:
__YOUR_APP_ID__es el código de la aplicación del Panel de Control de Pushwoosh.
4. Configuración nativa de Android
Anchor link toAgregue el archivo de configuración de Firebase:
- Copie su archivo
google-services.jsonal directorio raíz del proyecto. - Establezca la propiedad
googleServicesFileen la ruta de sugoogle-services.jsony especifique la propiedadpackage:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}5. Configuración nativa de iOS
Anchor link toEstablezca la propiedad bundleIdentifier en el objeto ios:
"expo": { "name": "sample", "ios": { "bundleIdentifier": "com.pushwoosh.sample" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}6. Precompile la aplicación
Anchor link toGenere el código nativo y configure las dependencias para cada plataforma ejecutando prebuild:
npx expo prebuild7. Ejecute el proyecto
Anchor link to- Compile y ejecute el proyecto:
npx expo run:androidnpx expo run:ios- Vaya al Panel de Control de Pushwoosh y envíe una notificación push.
- Debería ver la notificación en la aplicación.
Integración extendida
Anchor link toEn esta etapa, ya ha integrado el SDK y puede enviar y recibir notificaciones push. Ahora, exploremos la funcionalidad principal.
Escuchadores de eventos de notificaciones push
Anchor link toEn el SDK de Pushwoosh hay dos escuchadores de eventos, diseñados para manejar notificaciones push:
- El evento
onPushReceivedse activa cuando se recibe una notificación push. - El evento
onPushAcceptedse activa cuando un usuario abre una notificación.
Debe configurar estos escuchadores de eventos justo después de la inicialización del SDK al inicio de la aplicación:
import { DeviceEventEmitter } from 'react-native';import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler { setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener("pushOpened", (e) => { console.warn("Push opened:" + JSON.stringify(e)); });
}}Configuración de usuario
Anchor link toAl centrarse en el comportamiento y las preferencias individuales de los usuarios, puede ofrecer contenido personalizado, lo que conduce a una mayor satisfacción y lealtad del usuario.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration { afterUserLogin(user: User): void {
// Set user ID Pushwoosh.setUserId(user.getId());
// Set user email Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Etiquetas
Anchor link toLas etiquetas son pares clave-valor asignados a usuarios o dispositivos, que permiten la segmentación basada en atributos como preferencias o comportamiento, lo que posibilita la mensajería dirigida.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// Set list of favorite categories Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}Eventos
Anchor link toLos eventos son acciones o sucesos específicos del usuario dentro de la aplicación que se pueden rastrear para analizar el comportamiento y activar los mensajes o acciones correspondientes.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product: Product): void { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Seguimiento de la entrega de mensajes para iOS
Anchor link toDebe agregar un objetivo de Extensión de Servicio de Notificación a su proyecto. Esto es esencial para un seguimiento preciso de la entrega y para funciones como Rich Media en iOS.
Siga los pasos de la guía nativa para agregar el objetivo de la extensión y el código de Pushwoosh necesario dentro de él.
Propiedades adicionales del plugin
Anchor link to| Propiedad | Predeterminado | Descripción |
|---|---|---|
| Propiedades de iOS | ||
Pushwoosh_LOG_LEVEL | INFO | Nivel de registro para iOS. Valores posibles: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| Propiedades de Android | ||
logLevel | INFO | Nivel de registro para Android. Uno de: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
multiNotificationMode | true | Se puede cambiar a false en caso de que desee mostrar solo la última notificación al usuario |
icon | - | Ruta a un icono de notificación personalizado para Android |
Solución de problemas
Anchor link toSi encuentra algún problema durante el proceso de integración, consulte la sección de soporte y comunidad.
Error de registro de FCM: No se pudo recuperar el token. ¿Está Firebase configurado correctamente?
Anchor link toAsegúrese de que su propiedad googleServicesFile de Firebase esté configurada en el archivo de configuración de Expo y que el archivo google-services.json se agregue al directorio raíz de su proyecto:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}TypeError: No se puede leer la propiedad ‘init’ de null
Anchor link toPuede encontrar el error al intentar ejecutar la aplicación en un dispositivo.
Para resolver el problema, asegúrese de haber completado el paso de precompilación. Este genera el código nativo y configura las dependencias para cada plataforma.
npx expo prebuild