Passer au contenu

Guide d'intégration de base du SDK Expo

Cette section contient des informations sur la manière d’intégrer le SDK Expo de Pushwoosh dans votre application.

Prérequis

Anchor link to

Pour intégrer le SDK Expo de Pushwoosh dans votre application, vous aurez besoin des éléments suivants :

Étapes d’intégration

Anchor link to

1. Installer le plugin

Anchor link to

Installez le plugin Expo de Pushwoosh en utilisant l’Expo CLI

Terminal window
expo install pushwoosh-expo-plugin

Installez le SDK React Native de Pushwoosh

Terminal window
npm install pushwoosh-react-native-plugin --save

2. Définir les propriétés du plugin

Anchor link to

Ajoutez le plugin au début du tableau des plugins avec les propriétés nécessaires :

app.json/app.config.js
{
"expo": {
"plugins": [
[
"pushwoosh-expo-plugin",
{
"mode": "development",
"ios": {
"PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__"
},
"android": {
"apiToken": "__YOUR_DEVICE_API_TOKEN__"
}
}
]
]
}
}

Où :

  • mode est utilisé pour configurer le droit d’environnement APNs. Les valeurs “Development” ou “production” sont disponibles.
  • PW_API_TOKEN, apiToken est votre Jeton d’API de l’appareil Pushwoosh.

3. Initialiser Pushwoosh

Anchor link to

Dans le composant racine de votre application :

  • Importez le plugin pushwoosh-react-native-plugin.
  • Initialisez le SDK Pushwoosh.
  • Appelez register() dans votre logique d’initialisation pour vous inscrire aux notifications push.
index.tsx
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({
"pw_appid": "__YOUR_APP_ID__" ,
"project_number": "__YOUR_FCM_SENDER_ID__"
});
Pushwoosh.register();

Où :

  • __YOUR_APP_ID__ est le code d’application depuis le Control Panel de Pushwoosh.
  • __YOUR_FCM_SENDER_ID__ est le numéro de projet Firebase depuis la console Firebase.

4. Configuration native Android

Anchor link to

Ajouter le fichier de configuration Firebase :

  1. Copiez votre fichier google-services.json dans le répertoire racine du projet.
  2. Définissez la propriété googleServicesFile sur le chemin de votre google-services.json et spécifiez la propriété package :
app.json/app.config.js
"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. Configuration native iOS

Anchor link to

Définissez la propriété bundleIdentifier sur l’objet ios :

app.json/app.config.js
"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. Précompiler l’application

Anchor link to

Générez le code natif et configurez les dépendances pour chaque plateforme en exécutant prebuild :

Terminal window
npx expo prebuild

7. Exécuter le projet

Anchor link to
  1. Compilez et exécutez le projet :
Terminal window
npx expo run:android
  1. Allez dans le Control Panel de Pushwoosh et envoyez une notification push.
  2. Vous devriez voir la notification dans l’application.

Intégration étendue

Anchor link to

À ce stade, vous avez déjà intégré le SDK et pouvez envoyer et recevoir des notifications push. Explorons maintenant les fonctionnalités de base.

Écouteurs d’événements de notification push

Anchor link to

Dans le SDK Pushwoosh, il y a deux écouteurs d’événements, conçus pour gérer les notifications push :

  • l’événement onPushReceived est déclenché lorsqu’une notification push est reçue
  • l’événement onPushAccepted est déclenché lorsqu’un utilisateur ouvre une notification

Vous devriez configurer ces écouteurs d’événements juste après l’initialisation du SDK au démarrage de l’application :

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));
});
}
}

Configuration de l’utilisateur

Anchor link to

En vous concentrant sur le comportement et les préférences individuels de l’utilisateur, vous pouvez fournir un contenu personnalisé, ce qui conduit à une satisfaction et une fidélité accrues de l’utilisateur.

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
afterUserLogin(user: User): void {
// Définir l'ID utilisateur
Pushwoosh.setUserId(user.getId());
// Définir les e-mails de l'utilisateur
Pushwoosh.setEmails(user.getEmailList());
// Définir des informations utilisateur supplémentaires en tant que tags pour Pushwoosh
Pushwoosh.setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

Les tags sont des paires clé-valeur attribuées aux utilisateurs ou aux appareils, permettant une segmentation basée sur des attributs tels que les préférences ou le comportement, ce qui rend possible la messagerie ciblée.

import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser {
afterUserUpdateProfile(user: User): void {
// Définir la liste des catégories favorites
Pushwoosh.setTags({
"favorite_categories": user.getFavoriteCategoriesList()
});
// Définir les informations de paiement
Pushwoosh.setTags({
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
});
}
}

Événements

Anchor link to

Les événements sont des actions ou des occurrences spécifiques de l’utilisateur dans l’application qui peuvent être suivies pour analyser le comportement et déclencher des messages ou des actions correspondants.

import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Suivre l'événement de connexion
afterUserLogin(user: User): void {
Pushwoosh.postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
// Suivre l'événement d'achat
afterUserPurchase(product: Product): void {
Pushwoosh.postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

Suivi de la livraison des messages pour iOS

Anchor link to

Vous devez ajouter une cible d’Extension de Service de Notification à votre projet. Ceci est essentiel pour un suivi précis de la livraison et pour des fonctionnalités comme le Rich Media sur iOS.

Suivez les étapes du guide natif pour ajouter la cible d’extension et le code Pushwoosh nécessaire à l’intérieur.

Propriétés supplémentaires du plugin

Anchor link to
Propriété
Défaut
Description
Propriétés iOS
Pushwoosh_LOG_LEVELINFONiveau de journalisation pour iOS. Valeurs possibles : NONE, ERROR, WARN, INFO, DEBUG, NOISE
Propriétés Android
logLevelINFONiveau de journalisation pour Android. Une de : NONE, ERROR, WARN, INFO, DEBUG, NOISE
multiNotificationModetruePeut être changé en false si vous souhaitez n’afficher que la dernière notification pour l’utilisateur
icon-Chemin vers une icône de notification personnalisée pour Android

Dépannage

Anchor link to

Si vous rencontrez des problèmes pendant le processus d’intégration, veuillez consulter la section support et communauté.

Erreur d’enregistrement FCM : Impossible de récupérer le jeton. Firebase est-il correctement configuré ?
Anchor link to

Assurez-vous que votre propriété Firebase googleServicesFile est configurée dans le fichier de configuration d’Expo et que le fichier google-services.json est ajouté au répertoire racine de votre projet :

app.json/app.config.js
"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: Cannot read property ‘init’ of null
Anchor link to

Vous pourriez rencontrer cette erreur en essayant d’exécuter l’application sur un appareil. Pour résoudre le problème, assurez-vous d’avoir terminé l’étape de précompilation. Elle génère le code natif et configure les dépendances pour chaque plateforme.

Terminal window
npx expo prebuild