Guía de integración básica del SDK de Expo
Esta sección contiene información sobre cómo integrar el SDK de Pushwoosh para Expo en su aplicación.
Requisitos previos
Anchor link toPara integrar el SDK de Pushwoosh para Expo en su aplicación, necesitará lo siguiente:
Pasos de integración
Anchor link to1. Instale el plugin
Anchor link toInstale el plugin de Pushwoosh para Expo usando el CLI de Expo
expo install pushwoosh-expo-pluginInstale el SDK de Pushwoosh para React Native
npm install pushwoosh-react-native-plugin --save2. Establezca las propiedades del plugin
Anchor link toAñada 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 derecho de entorno de APNs. Los valores “Development” o “production” están disponibles.PW_API_TOKEN,apiTokenes su Pushwoosh Device API Token.
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 recibir 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 toAñada 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 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.
Listeners de eventos de notificaciones push
Anchor link toEn el SDK de Pushwoosh hay dos listeners de eventos, diseñados para manejar notificaciones push:
- El evento
onPushReceivedse dispara cuando se recibe una notificación push. - El evento
onPushAcceptedse dispara cuando un usuario abre una notificación.
Debe configurar estos listeners de eventos justo después de la inicialización del SDK al iniciar 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 {
// Establecer ID de usuario Pushwoosh.setUserId(user.getId());
// Establecer correo electrónico del usuario Pushwoosh.setEmails(user.getEmailList());
// Estableciendo información adicional del usuario como etiquetas para 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 {
// Establecer lista de categorías favoritas Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Establecer información de pago Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}Eventos
Anchor link toLos eventos son acciones específicas del usuario u ocurrencias 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 {
// Rastrear evento de inicio de sesión afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Rastrear evento de compra afterUserPurchase(product: Product): void { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Seguimiento de entrega de mensajes para iOS
Anchor link toDebe agregar un destino 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 destino 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 este 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