Intégration de notifications Push
Cet article de référence explique comment paramétrer les notifications push pour React Native. L’intégration des notifications push nécessite de configurer séparément chaque plateforme native. Suivez les guides respectifs listés pour terminer l’installation.
Étape 1 : Terminer la configuration initiale
Définissez les options enableBrazeIosPush
et enableFirebaseCloudMessaging
dans votre fichier app.json
pour activer le push pour iOS et Android, respectivement. Consultez les instructions de configuration ici pour plus de détails.
Notez que vous devrez utiliser ces paramètres au lieu des instructions de configuration natives si vous dépendez de bibliothèques de notifications push supplémentaires comme Expo Notifications.
Étape 1.1 : Enregistrer la notification push
Enregistrez-vous pour les notifications push en utilisant l’API Firebase Cloud Messaging (FCM) de Google. Pour accéder à une présentation complète, reportez-vous aux étapes suivantes du guide d’intégration des notifications push Native Android :
- Ajoutez Firebase à votre projet.
- Ajoutez Cloud Messaging à vos dépendances.
- Créez un compte de service.
- Générez des identifiants JSON.
- Téléchargez vos informations d’identification JSON sur Braze.
Étape 1.2 : Ajouter votre ID d’expéditeur Google
Tout d’abord, accédez à la console Firebase, ouvrez votre projet, puis sélectionnez Paramètres > Paramètres du projet.
Sélectionnez Messagerie Cloud, puis sous API Firebase Cloud Messaging (V1), copiez l’ID de l’expéditeur dans votre presse-papiers.
Ensuite, ouvrez le fichier app.json
de votre projet et attribuez à la propriété firebaseCloudMessagingSenderId
l’ID de l’expéditeur figurant dans votre presse-papiers. Par exemple :
1
"firebaseCloudMessagingSenderId": "693679403398"
Étape 1.3 : Ajouter le chemin d’accès à votre JSON Google Services
Dans le fichier app.json
de votre projet, ajoutez le chemin d’accès à votre fichier google-services.json
. Ce fichier est nécessaire lors de la définition de enableFirebaseCloudMessaging: true
dans votre configuration.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"expo": {
"android": {
"googleServicesFile": "PATH_TO_GOOGLE_SERVICES"
},
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"enableBrazeIosPush": true,
"enableFirebaseCloudMessaging": true,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true
}
],
]
}
}
Étape 1.1 : Télécharger les certificats APN
Générez un certificat pour le service de notification push d’Apple (APNs) et téléchargez-le dans le tableau de bord de Braze. Pour accéder à une description complète, voir Charger votre certificat APN.
Étape 1.2 : Choisissez une méthode d’intégration
Si vous n’avez pas l’intention de demander des autorisations de notifications push au lancement de l’application, omettez l’appel requestAuthorizationWithOptions:completionHandler:
dans votre AppDelegate, puis passez à l’étape 2. Sinon, suivez le guide d’intégration native d’iOS.
Lorsque vous avez terminé, passez à l’ étape 1.3.
Étape 1.3 : Migrer votre clé de notifications push
Si vous utilisiez auparavant expo-notifications
pour gérer votre clé de notification push, exécutez expo fetch:ios:certs
dans le dossier racine de votre application. Cela téléchargera votre clé de notification push (un fichier .p8), qui peut ensuite être téléchargée sur le tableau de bord de Braze.
Étape 2 : Demander une autorisation de notification push
Utilisez la méthode Braze.requestPushPermission()
(disponible sur v1.38.2 et supérieures) pour demander une autorisation des notifications push à l’utilisateur sur iOS et Android 13 et supérieurs. Pour Android 12 et inférieurs, cette méthode n’est pas opérationnelle.
Cette méthode intègre in paramètre requis qui précise les autorisations que SDK doit demander à l’utilisateur sur iOS. Ces options n’ont pas d’effet sur Android.
1
2
3
4
5
6
7
8
const permissionOptions = {
alert: true,
sound: true,
badge: true,
provisional: false
};
Braze.requestPushPermission(permissionOptions);
Étape 2.1 : Écouter les notifications push (facultatif)
Vous pouvez en outre vous abonner aux événements au cours desquels Braze a détecté et traité une notification push entrante. Utilisez la clé d’auditeur Braze.Events.PUSH_NOTIFICATION_EVENT
.
Les événements iOS push reçus ne se déclenchent que pour les notifications en avant-plan et content-available
pour les notifications en arrière-plan. Il ne se déclenchera pas pour les notifications reçues alors qu’elles sont terminées ou pour les notifications d’arrière-plan sans le champ content-available
.
1
2
3
4
Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, data => {
console.log(`Push Notification event of type ${data.payload_type} seen. Title ${data.title}\n and deeplink ${data.url}`);
console.log(JSON.stringify(data, undefined, 2));
});
Champs d’événements de la notification push
Pour obtenir une liste complète des champs de notifications push, reportez-vous au tableau ci-dessous :
Nom du champ | Type | Description |
---|---|---|
payload_type |
Chaîne de caractères | Spécifie le type de charge utile de la notification. Les deux valeurs envoyées par le SDK React native de Braze sont push_opened et push_received . |
url |
Chaîne de caractères | Spécifie l’URL qui a été ouvert par la notification. |
use_webview |
Valeur booléenne | Si la valeur est true , l’URL s’ouvrira dans l’application, dans une fenêtre WebView modale. Si la valeur est false , l’URL s’ouvrira dans le navigateur de l’appareil. |
title |
Chaîne de caractères | Représente le titre de la notification. |
body |
Chaîne de caractères | Représente le corps ou le contenu du texte de la notification. |
summary_text |
Chaîne de caractères | Représente le texte résumé de la notification. Celle-ci est mappée à partir de subtitle sur iOS. |
badge_count |
Nombre | Représente le nombre de badges de la notification. |
timestamp |
Nombre | Représente l’heure à laquelle la charge utile a été reçue par l’application. |
is_silent |
Valeur booléenne | Si la valeur est true , la charge utile est reçue en silence. Pour plus de détails sur l’envoi de notifications push silencieuses sur Android, reportez-vous à la section Notifications push silencieuses sur Android. Pour plus de détails sur l’envoi de notifications push silencieuses sur iOS, reportez-vous à la section Notifications push silencieuses sur iOS. |
is_braze_internal |
Valeur booléenne | Cette adresse sera true si une charge utile de notification a été envoyée pour une fonctionnalité interne du SDK, telle que la synchronisation des géorepérages, la synchronisation des indicateurs de fonctionnalités ou le suivi des désinstallations. La charge utile est reçue silencieusement par l’utilisateur. |
image_url |
Chaîne de caractères | Spécifie l’URL associée à l’image de notification. |
braze_properties |
Objet | Représente les propriétés de Braze associées à la campagne (paires clé-valeur). |
ios |
Objet | Représente les champs spécifiques à iOS. |
android |
Objet | Représente les champs spécifiques à Android. |
Étape 3 : Activer la création de liens profonds (facultatif)
Pour permettre à Braze de gérer les liens profonds à l’intérieur des composants React lorsqu’une notification push est cliquée, suivez les étapes supplémentaires.
Notre exemple d’application BrazeProject contient un exemple complet de liens profonds mis en œuvre. Pour en savoir plus sur les liens profonds, consultez notre article de FAQ.
Pour Android, la création de liens profonds est identique à la création de liens profonds sur les applications Android natives. Si vous souhaitez que le SDK de Braze gère automatiquement les liens profonds des notifications push, définissez androidHandlePushDeepLinksAutomatically: true
dans votre app.json
.
Étape 3.1 : Ajouter des fonctions de création de liens profonds
Pour iOS, ajoutez populateInitialUrlFromLaunchOptions
à la méthode didFinishLaunchingWithOptions
de votre AppDelegate. Par exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.moduleName = @"BrazeProject";
self.initialProps = @{};
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:apiKey endpoint:endpoint];
configuration.triggerMinimumTimeInterval = 1;
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
[self registerForPushNotifications];
[[BrazeReactUtils sharedInstance] populateInitialUrlFromLaunchOptions:launchOptions];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
Étape 3.2 : Configurer la gestion des liens profonds
Utilisez la méthode Linking.getInitialURL()
pour les liens profonds qui ouvrent votre application, et la méthode Braze.getInitialURL
pour les liens profonds à l’intérieur des notifications push qui ouvrent votre application lorsqu’elle n’est pas en cours d’exécution. Par exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Linking.getInitialURL()
.then(url => {
if (url) {
console.log('Linking.getInitialURL is ' + url);
showToast('Linking.getInitialURL is ' + url);
handleOpenUrl({ url });
}
})
.catch(err => console.error('Error getting initial URL', err));
// Handles deep links when an iOS app is launched from a hard close via push click.
Braze.getInitialURL(url => {
if (url) {
console.log('Braze.getInitialURL is ' + url);
showToast('Braze.getInitialURL is ' + url);
handleOpenUrl({ url });
}
});
Braze fournit cette solution de contournement car l’API de liaison de React Native ne prend pas en charge ce scénario en raison d’une condition de concurrence au démarrage de l’appli.
Étape 4 : Tester l’affichage des notifications push
À ce stade, vous devriez pouvoir envoyer des notifications aux appareils. Suivez ces étapes pour tester votre intégration de notification push.
À partir de macOS 13, sur certains appareils, vous pouvez tester les notifications push d’iOS sur un simulateur iOS 16+ fonctionnant avec Xcode 14 ou une version plus récente. Pour plus de détails, reportez-vous aux notes de version de Xcode 14.
- Définissez un utilisateur actif dans l’application React en appelant la méthode
Braze.changeUserId('your-user-id')
. - Allez dans Campagnes et créez une nouvelle campagne de notification push. Choisissez les plateformes que vous souhaitez tester.
- Composez votre notification test et sélectionnez l’onglet Test. Ajoutez le même
user-id
que l’utilisateur test et cliquez sur Envoyer le test. Vous devriez recevoir rapidement la notification sur votre appareil.
Transférer les notifications push Android vers un autre FMS
Si vous souhaitez utiliser un service de messagerie Firebase (FMS) supplémentaire, vous pouvez spécifier un FMS de repli à appeler si votre application reçoit une notification push qui ne provient pas de Braze. Par exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
...
"androidFirebaseMessagingFallbackServiceEnabled": true,
"androidFirebaseMessagingFallbackServiceClasspath": "com.company.OurFirebaseMessagingService"
}
]
]
}
}
Configurer les extensions d’applications avec Expo
Activation des notifications push riches pour iOS
Les notifications push riches sont disponibles par défaut pour Android.
Pour activer les notifications push enrichies sur iOS à l’aide d’Expo, configurez la propriété enableBrazeIosRichPush
sur true
dans votre objet expo.plugins
dans app.json
:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
...
"enableBrazeIosRichPush": true
}
]
]
}
}
Enfin, ajoutez l’identifiant du bundle de cette extension d’application à la configuration des informations d’identification de votre projet : <your-app-bundle-id>.BrazeExpoRichPush
. Pour plus de détails sur ce processus, reportez-vous à la section Utiliser les extensions d’applications avec Expo Application Services.
Activation des contenus push pour iOS
Les contenus push sont disponibles par défaut pour Android.
Pour activer les contenus push sur iOS à l’aide d’Expo, assurez-vous qu’un groupe d’applications est défini pour votre application. Pour plus d’informations, voir Ajouter un groupe d’applications.
Ensuite, configurez la propriété enableBrazeIosPushStories
sur true
et attribuez votre ID de groupe d’applications à iosPushStoryAppGroup
dans votre objet expo.plugins
dans app.json
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
...
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.company.myApp.PushStories"
}
]
]
}
}
Enfin, ajoutez l’identifiant du bundle de cette extension d’application à la configuration des informations d’identification de votre projet : <your-app-bundle-id>.BrazeExpoPushStories
. Pour plus de détails sur ce processus, reportez-vous à la section Utiliser les extensions d’applications avec Expo Application Services.
Si vous utilisez les contenus push avec Expo Application Services, assurez-vous d’utiliser l’indicateur EXPO_NO_CAPABILITY_SYNC=1
lors de l’exécution de eas build
. Il existe un problème connu dans la ligne de commande qui supprime la capacité des groupes d’applications du profil de provisionnement de votre extension.
Utiliser les extensions d’applications avec Expo Application Services
Si vous utilisez Expo Application Services (EAS) et que vous avez activé enableBrazeIosRichPush
ou enableBrazeIosPushStories
, vous devrez déclarer les identifiants de bundle correspondants pour chaque extension d’application dans votre projet. Vous pouvez aborder cette étape de plusieurs manières, selon la façon dont votre projet est configuré pour gérer la signature de code avec EAS.
Une approche consiste à utiliser la configuration appExtensions
dans votre fichier app.json
en suivant la documentation sur les extensions d’applications d’Expo. Vous pouvez également définir le paramètre multitarget
dans votre fichier credentials.json
en suivant la documentation sur les identifiants locaux d’Expo.