Skip to content

Notifications push

Les notifications push vous permettent d’envoyer des notifications depuis votre appli lorsque des événements importants se produisent. Vous pouvez envoyer une notification push lorsque vous avez de nouveaux messages instantanés à envoyer, des alertes d’actualité à envoyer ou le dernier épisode de l’émission télévisée préférée de votre utilisateur prêt à être téléchargé pour un visionnage hors ligne. Ils sont également plus efficaces que la récupération en arrière-plan, car votre application n’est lancée que lorsque c’est nécessaire.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK Android Braze.

Fonctionnalités créées

Les fonctionnalités suivantes sont créées dans le SDK Android de Braze. Pour utiliser toute autre fonctionnalité de notification push, vous devrez configurer les notifications push pour votre application.

À propos du cycle de vie des notifications push

L’organigramme suivant montre comment Braze gère le cycle de vie des notifications push, notamment les demandes d’autorisation, la génération de jetons et l’envoi/distribution des messages.

---
config:
  theme: neutral
---
flowchart TD

%% Permission flow
subgraph Permission[Push Permissions]
    B{Android version of the device?}
    B -->|Android 13+| C["requestPushPermissionPrompt() called"]
    B -->|Android 12 and earlier| D[No permissions required]
    
    %% Connect Android 12 path to Braze state
    D --> H3[Braze: user subscription state]
    H3 --> J3[Defaults to 'subscribed' when user profile created]
    
    C --> E{Did the user grant push permission?}
    E -->|Yes| F[POST_NOTIFICATIONS permission granted]
    E -->|No| G[POST_NOTIFICATIONS permission denied]
    
    %% Braze subscription state updates
    F --> H1[Braze: user subscription state]
    G --> H2[Braze: user subscription state]
    
    H1 --> I1{Automatically opt in after permission granted?}
    I1 -->|true| J1[Set to 'opted-in']
    I1 -->|false| J2[Remains 'subscribed']
    
    H2 --> K1[Remains 'subscribed'<br/>or 'unsubscribed']
    
    %% Subscription state legend
    subgraph BrazeStates[Braze subscription states]
        L1['Subscribed' - default state<br/>when user profile created]
        L2['Opted-in' - user explicitly<br/>wants push notifications]
        L3['Unsubscribed' - user explicitly<br/>opted out of push]
    end
    
    %% Note about user-level states
    note1[Note: These states are user-level<br/>and apply across all devices for the user]
    
    %% Connect states to legend
    J1 -.-> L2
    J2 -.-> L1
    J3 -.-> L1
    K1 -.-> L3
    note1 -.-> BrazeStates
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
  theme: neutral
---
flowchart TD

%% Token generation flow
subgraph Token[Token Generation]
    H["Braze SDK initialized"] --> Q{Is FCM auto-registration enabled?}
    Q -->|Yes| L{Is required configuration present?}
    Q -->|No| M[No FCM token generated]
    L -->|Yes| I[Generate FCM token]
    L -->|No| M
    I --> K[Register token with Braze]

    %% Configuration requirements
    subgraph Config[Required configuration]
        N['google-services.json' file is present]
        O['com.google.firebase:firebase-messaging' in gradle]
        P['com.google.gms.google-services' plugin in gradle]
    end

    %% Connect config to check
    N -.-> L
    O -.-> L
    P -.-> L
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
  theme: neutral
  fontSize: 10
---
flowchart TD

subgraph Display[Push Display]
    %% Push delivery flow
    W[Push sent to FCM servers] --> X{Did FCM receive push?}
    X -->|App is terminated| Y[FCM cannot deliver push to the app]
    X -->|Delivery conditions met| X1[App receives push from FCM]
    X1 --> X2[Braze SDK receives push]
    X2 --> R[Push type?]

    %% Push Display Flow
    R -->|Standard push| S{Is push permission required?}
    R -->|Silent push| T[Braze SDK processes silent push]
    S -->|Yes| S1{Did the user grant push permission?}
    S -->|No| V[Notification is shown to the user]
    S1 -->|Yes| V
    S1 -->|No| U[Notification is not shown to the user]
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass

Mise en place des notifications push

Limites de débit

L’API Firebase Cloud Messaging (FCM) présente une limite de débit par défaut de 600 000 requêtes par minute. Si vous atteignez cette limite, Braze réessaiera automatiquement dans quelques minutes. Pour demander une augmentation, contactez le service d’assistance de Firebase.

Étape 1 : Ajoutez Firebase à votre projet

Tout d’abord, ajoutez Firebase à votre projet Android. Pour obtenir des instructions pas à pas, consultez le guide de configuration de Firebase de Google.

Étape 2 : Ajoutez Cloud Messaging à vos dépendances

Ensuite, ajoutez la bibliothèque Cloud Messaging aux dépendances de votre projet. Dans votre projet Android, ouvrez build.gradle, puis ajoutez la ligne suivante à votre bloc dependencies.

1
implementation "google.firebase:firebase-messaging:+"

Vos dépendances devraient ressembler à ce qui suit :

1
2
3
4
dependencies {
  implementation project(':android-sdk-ui')
  implementation "com.google.firebase:firebase-messaging:+"
}

Étape 3 : Activez l’API d’envoi de messages de Firebase Cloud.

Dans Google Cloud, sélectionnez le projet utilisé par votre application Android, puis activez l’API Firebase Cloud Messaging.

API Firebase Cloud Messaging activée

Étape 4 : Créer un compte de service

Ensuite, créez un nouveau compte de service, afin que Braze puisse effectuer des appels API autorisés lors de l’enregistrement des jetons FCM. Dans Google Cloud, sélectionnez Service Accounts (Comptes de service), puis choisissez votre projet. Sur la page Comptes de service, sélectionnez Créer un compte de service.

Page d'accueil du compte de service d'un projet avec l'option "Créer un compte de service" en surbrillance.

Saisissez un nom de compte de service, un ID et une description, puis sélectionnez Create and continue (Créer et continuer).

Le formulaire "Détails du compte de service".

Dans le champ Rôle, recherchez et sélectionnez Firebase Cloud Messaging API Admin dans la liste des rôles. Pour un accès plus restrictif, créez un rôle personnalisé avec l’autorisation cloudmessaging.messages.create, puis choisissez-le dans la liste. Lorsque vous avez terminé, sélectionnez Terminé.

Formulaire « Grant this service account access to project » (Accorder à ce compte de service l'accès au projet) avec « Admin API Firebase Cloud Messaging » sélectionné comme rôle.

Étape 5 : Générer des identifiants JSON

Ensuite, générez les identifiants JSON pour votre compte de service FCM. Dans Google Cloud IAM & Admin, sélectionnez Service Accounts (Comptes de service), puis choisissez votre projet. Recherchez le compte de service FCM que vous avez créé précédemment, puis sélectionnez Actions > Manage Keys (Gérer les clés).

Page d'accueil du compte de service du projet avec le menu "Actions" ouvert.

Sélectionnez Ajouter une clé > Créer une nouvelle clé.

Le compte de service sélectionné avec le menu "Ajouter une clé" ouvert.

Choisissez JSON, puis sélectionnez Create (Créer). Si vous avez créé votre compte de service en utilisant un ID de projet Google Cloud différent de votre ID de projet FCM, vous devrez mettre à jour manuellement la valeur attribuée à l’adresse project_id dans votre fichier JSON.

N’oubliez pas l’endroit où vous avez téléchargé la clé : vous en aurez besoin à l’étape suivante.

Le formulaire de création d'une clé privée avec "JSON" sélectionné.

Étape 6 : Téléchargez vos informations d’identification JSON vers Braze.

Ensuite, chargez vos identifiants JSON dans votre tableau de bord de Braze. Dans Braze, sélectionnez Paramètres > Paramètres des applications.

Le menu Paramètres s'ouvre dans Braze avec « Paramètres des applications » en surbrillance.

Sous les paramètres de notifications push de votre application Android, choisissez Firebase, puis sélectionnez Charger un fichier JSON et chargez les identifiants que vous avez générés précédemment. Lorsque vous avez terminé, sélectionnez Enregistrer.

Formulaire des paramètres de notifications push avec Firebase sélectionné comme fournisseur de notifications push.

Étape 7 : Configurer l’enregistrement automatique des jetons

Lorsqu’un de vos utilisateurs opte pour les notifications push, votre application doit générer un jeton FCM sur son appareil avant que vous puissiez lui envoyer des notifications push. Avec le SDK Braze, vous pouvez activer l’enregistrement automatique des jetons FCM pour l’appareil de chaque utilisateur dans les fichiers de configuration Braze de votre projet.

Tout d’abord, accédez à la console Firebase, ouvrez votre projet, puis sélectionnez Paramètres > Paramètres du projet.

Le projet Firebase avec le menu Paramètres ouvert.

Sélectionnez Cloud Messaging, puis sous API Firebase Cloud Messaging (V1), copiez le numéro dans le champ ID de l’expéditeur.

La page Messagerie Cloud du projet Firebase avec l'ID de l'expéditeur mis en évidence.

Ensuite, ouvrez votre projet Android Studio et utilisez votre ID d’expéditeur Firebase pour activer l’enregistrement automatique des jetons FCM au sein de votre braze.xml ou BrazeConfig.

Pour configurer l’enregistrement automatique des jetons FCM, ajoutez les lignes suivantes à votre fichier braze.xml:

1
2
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Remplacez FIREBASE_SENDER_ID par la valeur que vous avez copiée dans les paramètres de votre projet Firebase. Votre site braze.xml devrait ressembler à ce qui suit :

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">12345ABC-6789-DEFG-0123-HIJK456789LM</string>
  <bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">603679405392</string>
</resources>

Pour configurer l’enregistrement automatique des jetons FCM, ajoutez les lignes suivantes à votre BrazeConfig :

1
2
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")
1
2
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")

Remplacez FIREBASE_SENDER_ID par la valeur que vous avez copiée dans les paramètres de votre projet Firebase. Votre site BrazeConfig devrait ressembler à ce qui suit :

1
2
3
4
5
6
7
8
9
10
BrazeConfig brazeConfig = new BrazeConfig.Builder()
  .setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
  .setCustomEndpoint("sdk.iad-01.braze.com")
  .setSessionTimeout(60)
  .setHandlePushDeepLinksAutomatically(true)
  .setGreatNetworkDataFlushInterval(10)
  .setIsFirebaseCloudMessagingRegistrationEnabled(true)
  .setFirebaseCloudMessagingSenderIdKey("603679405392")
  .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
9
10
val brazeConfig = BrazeConfig.Builder()
  .setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
  .setCustomEndpoint("sdk.iad-01.braze.com")
  .setSessionTimeout(60)
  .setHandlePushDeepLinksAutomatically(true)
  .setGreatNetworkDataFlushInterval(10)
  .setIsFirebaseCloudMessagingRegistrationEnabled(true)
  .setFirebaseCloudMessagingSenderIdKey("603679405392")
  .build()
Braze.configure(this, brazeConfig)

Étape 8 : Supprimez les demandes automatiques dans votre classe d’application

Pour éviter que Braze ne déclenche des requêtes réseau inutiles à chaque fois que vous envoyez des notifications push silencieuses, supprimez toutes les requêtes réseau automatiques configurées dans la méthode onCreate() de votre classe Application. Pour plus d’informations, consultez Référence pour les développeurs Android : Application.

Affichage des notifications

Étape 1 : Enregistrer le service de messagerie de Firebase de Braze

Vous pouvez créer un service d’envoi de messages Firebase nouveau, existant ou non Braze. Choisissez celui qui répond le mieux à vos besoins spécifiques.

Braze comprend un service pour gérer la réception de notifications push et les intentions d’ouverture. Notre classe BrazeFirebaseMessagingService doit être enregistrée dans votre AndroidManifest.xml :

1
2
3
4
5
6
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
  android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter>
</service>

Notre code de notification utilise également BrazeFirebaseMessagingService pour gérer le suivi des ouvertures et des clics. Ce service doit être enregistré dans le AndroidManifest.xml pour fonctionner correctement. N’oubliez pas non plus que Braze préfixe les notifications provenant de notre système avec une clé unique afin de ne rendre que les notifications envoyées depuis nos systèmes. Vous pouvez enregistrer des services supplémentaires séparément pour afficher les notifications envoyées par d’autres services FCM. Voir AndroidManifest.xml dans l’exemple d’application Firebase push.

Si vous avez déjà enregistré un service d’envoi de messages Firebase, vous pouvez passer des RemoteMessage à Braze par l’intermédiaire de BrazeFirebaseMessagingService.handleBrazeRemoteMessage(). Cette méthode n’affichera une notification que si l’objet RemoteMessage provient de Braze et l’ignorera si ce n’est pas le cas.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyFirebaseMessagingService extends FirebaseMessagingService {
  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
      // This Remote Message originated from Braze and a push notification was displayed.
      // No further action is needed.
    } else {
      // This Remote Message did not originate from Braze.
      // No action was taken and you can safely pass this Remote Message to other handlers.
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
class MyFirebaseMessagingService : FirebaseMessagingService() {
  override fun onMessageReceived(remoteMessage: RemoteMessage?) {
    super.onMessageReceived(remoteMessage)
    if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
      // This Remote Message originated from Braze and a push notification was displayed.
      // No further action is needed.
    } else {
      // This Remote Message did not originate from Braze.
      // No action was taken and you can safely pass this Remote Message to other handlers.
    }
  }
}

Si vous souhaitez également utiliser un autre service de messagerie Firebase, vous pouvez également spécifier un service de messagerie Firebase de repli à appeler si votre application reçoit une notification push qui ne provient pas de Braze.

Dans votre braze.xml, précisez :

1
2
<bool name="com_braze_fallback_firebase_cloud_messaging_service_enabled">true</bool>
<string name="com_braze_fallback_firebase_cloud_messaging_service_classpath">com.company.OurFirebaseMessagingService</string>

ou par le biais de la configuration de l’exécution :

1
2
3
4
5
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setFallbackFirebaseMessagingServiceEnabled(true)
        .setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
val brazeConfig = BrazeConfig.Builder()
        .setFallbackFirebaseMessagingServiceEnabled(true)
        .setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
        .build()
Braze.configure(this, brazeConfig)

Étape 2 : Conformer les petites icônes aux lignes directrices en matière de conception

Pour des informations générales sur les icônes de notification Android, consultez l’aperçu des notifications.

À partir de Android N, vous devez mettre à jour ou supprimer les objets de petites icônes de notification qui impliquent une couleur. Le système Android (et non le SDK Braze) ignore tous les canaux non alpha et de transparence dans les icônes d’action et les petites icônes de notification. En d’autres termes, Android convertit toutes les parties de votre petite icône de notification en monochrome, sauf pour les zones transparentes.

Pour créer une ressource de petite icône de notification qui s’affiche correctement :

  • Supprimez toutes les couleurs de l’image sauf le blanc.
  • Toutes les parties non blanches de l’objet doivent être transparentes.

Les grandes et petites icônes suivantes sont des exemples d’icônes correctement conçues :

Une petite icône apparaît dans le coin inférieur d'une grande icône à côté d'un message qui dit "Hey I'm on my way to the bar but..."

Étape 3 : Configurer les icônes de notification

Spécifier des icônes dans braze.xml

Braze vous permet de configurer vos icônes de notification en spécifiant des ressources dessinées dans votre braze.xml :

1
2
<drawable name="com_braze_push_small_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>
<drawable name="com_braze_push_large_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>

Il est nécessaire de définir une petite icône de notification. Si vous n’en définissez pas, Braze utilisera par défaut l’icône de l’application comme petite icône de notification, ce qui n’est pas forcément idéal.

Définir une grande icône de notification est facultatif, mais recommandé.

Spécifier la couleur d’accentuation de l’icône

La couleur d’accentuation de l’icône de notification peut être modifiée dans votre braze.xml. Si la couleur n’est pas spécifiée, la couleur par défaut est le même gris que celui utilisé par Lollipop pour les notifications du système.

1
<integer name="com_braze_default_notification_accent_color">0xFFf33e3e</integer>

Vous pouvez également utiliser une référence de couleur :

1
<color name="com_braze_default_notification_accent_color">@color/my_color_here</color>

Étape 4 : Ajouter des liens profonds

Activer l’ouverture automatique du lien profond

Pour permettre à Braze d’ouvrir automatiquement votre application et les liens profonds lorsqu’une notification push est cliquée, définissez com_braze_handle_push_deep_links_automatically sur true dans votre fichier braze.xml :

1
<bool name="com_braze_handle_push_deep_links_automatically">true</bool>

Cet indicateur peut également être défini par la configuration de l’exécution :

1
2
3
4
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
val brazeConfig = BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build()
Braze.configure(this, brazeConfig)

Si vous souhaitez gérer de manière personnalisée les liens profonds, vous devrez créer un rappel de poussée qui écoute les poussées reçues et les intentions d’ouverture de Braze. Pour plus d’informations, voir Utilisation d’un rappel pour les événements “push”.

Création de liens profonds personnalisés

Si vous n’avez pas encore ajouté de liens profonds à votre application, suivez les instructions figurant dans la documentation destinée aux développeurs Android sur la création de liens profonds. Pour en savoir plus sur les liens profonds, consultez notre article de FAQ.

Ajouter des liens profonds

Le tableau de bord de Braze prend en charge la mise en place de liens profonds ou d’URL Web dans les campagnes de notifications push et des Canvas qui seront ouverts lorsque la notification est cliquée.

Le paramètre "On Click Behavior" dans le tableau de bord de Braze avec "Deep Link Into Application" sélectionné dans le menu déroulant.

Personnaliser le comportement de la pile arrière

Par défaut, le SDK Android place l’activité du lanceur principal de votre application hôte dans la pile arrière lorsqu’il suit des liens profonds de notification push. Braze vous permet de définir qu’une activité personnalisée s’ouvre dans la pile arrière à la place de votre activité de lanceur principal ou de désactiver complètement la pile arrière.

Par exemple, pour définir une activité appelée YourMainActivity comme activité de la pile arrière à l’aide de la configuration d’exécution:

1
2
3
4
5
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setPushDeepLinkBackStackActivityEnabled(true)
        .setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
val brazeConfig = BrazeConfig.Builder()
        .setPushDeepLinkBackStackActivityEnabled(true)
        .setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
        .build()
Braze.configure(this, brazeConfig)

Consultez la configuration équivalente pour votre braze.xml. Notez que le nom de la classe doit être identique à celui renvoyé par Class.forName().

1
2
<bool name="com_braze_push_deep_link_back_stack_activity_enabled">true</bool>
<string name="com_braze_push_deep_link_back_stack_activity_class_name">your.package.name.YourMainActivity</string>

Étape 5 : Définir les canaux de notification

Le SDK Android de Braze prend en charge les canaux de notification Android. Si une notification Braze ne contient pas d’ID pour un canal de notification ou qu’une notification Braze contient un ID de canal non valide, Braze affichera la notification avec le canal de notification par défaut défini dans le SDK. Les utilisateurs de Braze utilisent les canaux de notification Android au sein de la plateforme pour regrouper les notifications.

Pour définir le nom du canal de notification par défaut de Braze auquel l’utilisateur est confronté, procédez comme suit BrazeConfig.setDefaultNotificationChannelName().

Pour définir la description du canal de notification par défaut de Braze à laquelle l’utilisateur est confronté, utilisez la commande BrazeConfig.setDefaultNotificationChannelDescription().

Mettez à jour toutes les campagnes API avec le paramètre Android push object pour inclure le champ notification_channel. Si ce champ n’est pas spécifié, Braze enverra la charge utile de notification avec l’ID du canal de repli du tableau de bord.

En dehors du canal de notification par défaut, Braze ne crée aucun canal. Tous les autres canaux doivent être définis par programmation par l’application hôte, puis entrés dans le tableau de bord de Braze.

Le nom et la description par défaut du canal peuvent également être configurés dans braze.xml.

1
2
<string name="com_braze_default_notification_channel_name">Your channel name</string>
<string name="com_braze_default_notification_channel_description">Your channel description</string>

Étape 6 : Tester l’affichage et l’analyse des notifications

Tester l’affichage

À ce stade, vous devriez pouvoir voir les notifications envoyées par Braze. Pour tester cela, rendez-vous sur la page Campagnes de votre tableau de bord Braze et créez une campagne de notification push. Choisissez Android Push et concevez votre message. Cliquez ensuite sur l’icône « Œil » dans le composeur pour obtenir l’expéditeur de test. Saisissez l’ID ou l’adresse e-mail de votre utilisateur actuel et cliquez sur Envoyer le test. Vous devriez voir la notification push s’afficher sur votre appareil.

L'onglet 'Test' d'une campagne de notification push dans le tableau de bord de Braze.

Pour les problèmes liés à l’affichage push, consultez notre guide de résolution des problèmes.

Tester l’analyse

À ce stade, vous devez également disposer d’un enregistrement de l’analyse pour les ouvertures de notifications push. En cliquant sur la notification lorsqu’elle arrive, le nombre d’ouvertures directes sur la page des résultats de votre campagne devrait augmenter de 1. Consultez notre article sur les rapports push pour en savoir plus sur les analyses/analytiques push.

Pour les problèmes liés à l’analyse/analytique push, consultez notre guide de résolution des problèmes.

Tester depuis la ligne de commande

Si vous souhaitez tester les notifications in-app et push via l’interface de ligne de commande, vous pouvez envoyer une seule notification par le biais du terminal via cURL et l ‘API de messages. Vous devrez remplacer les champs suivants par les valeurs correctes pour votre cas de test :

  • YOUR_API_KEY (Allez dans Paramètres > Clés API.)
  • YOUR_EXTERNAL_USER_ID ( Recherchez un profil utilisateur sur la page Recherche d’utilisateurs).
  • YOUR_KEY1 (facultatif)
  • YOUR_VALUE1 (facultatif)
1
2
3
4
5
6
7
8
9
10
11
12
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
  "external_user_ids":["YOUR_EXTERNAL_USER_ID"],
  "messages": {
    "android_push": {
      "title":"Test push title",
      "alert":"Test push",
      "extra": {
        "YOUR_KEY1":"YOUR_VALUE1"
      }
    }  
  }
}' https://rest.iad-01.braze.com/messages/send

Cet exemple utilise l’instance US-01. Si vous n’êtes pas sur cette instance, remplacez l’endpoint US-01 par votre endpoint.

Notifications push de la conversion

L’initiative des personnes et des conversations est une initiative Android pluriannuelle qui vise à améliorer la prise en compte des personnes et des conversations dans les surfaces du système du téléphone. Cette priorité est basée sur le fait que la communication et l’interaction avec d’autres personnes restent la zone fonctionnelle la plus valorisée et la plus importante pour la majorité des utilisateurs d’Android dans toutes les tranches démographiques.

Exigences d’utilisation

  • Ce type de notification nécessite le SDK Braze pour Android v15.0.0 et ultérieures et des appareils Android 11 et ultérieurs.
  • Les appareils ou les SDK non pris en charge reprennent une notification push standard.

Cette fonctionnalité est uniquement disponible sur l’API REST de Braze. Voir l’objet push d’Android pour plus d’informations.

Erreurs de dépassement de quota du FCM

Lorsque votre limite pour Firebase Cloud Messaging (FCM) est dépassée, Google renvoie des erreurs de type “quota dépassé”. La limite par défaut du FCM est de 600 000 requêtes par minute. Braze retente l’envoi conformément aux meilleures pratiques recommandées par Google. Cependant, un grand nombre de ces erreurs peut prolonger le temps d’envoi de plusieurs minutes. Pour atténuer l’impact potentiel, Braze vous enverra une alerte indiquant que la limite de débit est dépassée et les mesures que vous pouvez prendre pour éviter les erreurs.

Pour vérifier votre limite actuelle, accédez à votre Google Cloud Console > API et services > Firebase Cloud Messaging API > Quotas et limites du système, ou consultez la page Quotas de l’API FCM.

Bonnes pratiques

Nous vous recommandons les meilleures pratiques suivantes pour limiter le nombre d’erreurs.

Demande d’augmentation de la limite de débit auprès de la FCM

Pour demander une augmentation de la limite de débit au FCM, vous pouvez contacter directement le service d’assistance de Firebase ou procéder comme suit :

  1. Allez à la page Quotas de l’API du FCM.
  2. Emplacement/localisation du quota d’envoi de requêtes par minute.
  3. Sélectionnez Modifier le quota.
  4. Saisissez une nouvelle valeur et soumettez votre demande.

Demander une limite de débit globale via Braze

Pour appliquer une limite à l’échelle de l’espace de travail pour les notifications push Android, contactez le support Braze.

Limites de débit

Les notifications push sont limitées en débit, n’ayez donc pas peur d’en envoyer autant que votre application en a besoin. iOS et les serveurs du service de notification push (APN) d’Apple contrôleront la fréquence à laquelle elles sont délivrées, et vous n’aurez pas d’ennuis si vous en envoyez trop. Si vos notifications push sont limitées, elles peuvent être retardées jusqu’à la prochaine fois que l’appareil envoie un paquet persistant ou reçoit une autre notification.

Mise en place des notifications push

Étape 1 : Téléchargez votre jeton APN

Before you can send an iOS push notification using Braze, you need to upload your .p8 push notification file, as described in Apple’s developer documentation:

  1. In your Apple developer account, go to Certificates, Identifiers & Profiles.
  2. Under Keys, select All and click the add button (+) in the upper-right corner.
  3. Under Key Description, enter a unique name for the signing key.
  4. Under Key Services, select the Apple Push Notification service (APNs) checkbox, then click Continue. Click Confirm.
  5. Note the key ID. Click Download to generate and download the key. Make sure to save the downloaded file in a secure place, as you cannot download this more than once.
  6. In Braze, go to Settings > App Settings and upload the .p8 file under Apple Push Certificate. You can upload either your development or production push certificate. To test push notifications after your app is live in the App Store, its recommended to set up a separate workspace for the development version of your app.
  7. When prompted, enter your app’s bundle ID, key ID, and team ID. You’ll also need to specify whether to send notifications to your app’s development or production environment, which is defined by its provisioning profile.
  8. When you’re finished, select Save.

Étape 2 : Activer les fonctionnalités de notification push

Dans Xcode, accédez à la section Signage et capacités de la cible principale de l’app et ajoutez la capacité de notifications push.

La section "Signing & Capabilities" dans un projet Xcode.

Étape 3 : Mise en place de la manutention par poussée

Vous pouvez utiliser le SDK Swift pour automatiser le traitement des notifications à distance reçues de Braze. C’est la façon la plus simple de gérer les notifications push et c’est la méthode de gestion recommandée.

Étape 3.1 : Activer l’automatisation dans la propriété push

Pour activer l’intégration automatique des notifications push, définissez la propriété automation de la configuration push sur true :

1
2
let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}", endpoint: "{YOUR-BRAZE-API-ENDPOINT}")
configuration.push.automation = true
1
2
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{YOUR-BRAZE-API-KEY}" endpoint:@"{YOUR-BRAZE-API-ENDPOINT}"];
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];

Cela demande au SDK de :

  • Enregistrer votre application pour les notifications push dans le système.
  • Demander l’autorisation/permission de la notification push lors de l’initialisation.
  • Fournir dynamiquement des implémentations pour les méthodes de délégation du système liées à la notification push.

Étape 3.2 : Remplacer les configurations individuelles (en option)

Pour un contrôle plus précis, chaque étape d’automatisation peut être activée ou désactivée individuellement :

1
2
3
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = true
configuration.push.automation.requestAuthorizationAtLaunch = false
1
2
3
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];
configuration.push.automation.requestAuthorizationAtLaunch = NO;

Voir Braze.Configuration.Push.Automation pour connaître toutes les options disponibles et automation pour plus d’informations sur le comportement de l’automatisation.

Étape 3.1 : S’inscrire aux notifications push avec les APN

Incluez l’exemple de code approprié dans la méthode de délégationapplication:didFinishLaunchingWithOptions: de votre application afin que les appareils de vos utilisateurs puissent s’enregistrer auprès des APN. Assurez-vous d’appeler tout le code d’intégration push dans le thread principal de votre application.

Braze fournit également des catégories push par défaut pour la prise en charge des boutons d’action push, qui doivent être ajoutées manuellement à votre code d’enregistrement push. Reportez-vous aux boutons d’action push pour connaître les étapes d’intégration supplémentaires.

Ajoutez le code suivant à la méthode application:didFinishLaunchingWithOptions: de votre délégué d’application.

1
2
3
4
5
6
7
8
9
10
11
application.registerForRemoteNotifications()
let center = UNUserNotificationCenter.current()
center.setNotificationCategories(Braze.Notifications.categories)
center.delegate = self
var options: UNAuthorizationOptions = [.alert, .sound, .badge]
if #available(iOS 12.0, *) {
  options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
}
center.requestAuthorization(options: options) { granted, error in
  print("Notification authorization, granted: \(granted), error: \(String(describing: error))")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[application registerForRemoteNotifications];
UNUserNotificationCenter *center = UNUserNotificationCenter.currentNotificationCenter;
[center setNotificationCategories:BRZNotifications.categories];
center.delegate = self;
UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
if (@available(iOS 12.0, *)) {
  options = options | UNAuthorizationOptionProvisional;
}
[center requestAuthorizationWithOptions:options
                      completionHandler:^(BOOL granted, NSError *_Nullable error) {
                        NSLog(@"Notification authorization, granted: %d, "
                              @"error: %@)",
                              granted, error);
}];

Étape 3.2 : Enregistrer des jetons avec Braze

Une fois l’enregistrement des APN terminé, transmettez le deviceToken généré à Braze pour activer les notifications push pour l’utilisateur.

Ajoutez le code suivant à la méthode application(_:didRegisterForRemoteNotificationsWithDeviceToken:) de votre application :

1
AppDelegate.braze?.notifications.register(deviceToken: deviceToken)

Ajoutez le code suivant à la méthode application:didRegisterForRemoteNotificationsWithDeviceToken: de votre application :

1
[AppDelegate.braze.notifications registerDeviceToken:deviceToken];

Étape 3.3 : Activer la gestion des notifications push

Ensuite, transmettez les notifications push reçues à Braze. Cette étape est nécessaire pour la journalisation de l’analyse/analytique push et la gestion des liens. Assurez-vous d’appeler tout le code d’intégration push dans le thread principal de votre application.

Traitement par défaut des notifications push

Pour activer la gestion du push par défaut de Braze, ajoutez le code suivant à la méthode application(_:didReceiveRemoteNotification:fetchCompletionHandler:) de votre application :

1
2
3
4
5
6
7
if let braze = AppDelegate.braze, braze.notifications.handleBackgroundNotification(
  userInfo: userInfo,
  fetchCompletionHandler: completionHandler
) {
  return
}
completionHandler(.noData)

Ensuite, ajoutez ce qui suit à la méthode userNotificationCenter(_:didReceive:withCompletionHandler:) de votre application :

1
2
3
4
5
6
7
if let braze = AppDelegate.braze, braze.notifications.handleUserNotification(
  response: response,
  withCompletionHandler: completionHandler
) {
  return
}
completionHandler()

Pour activer la gestion du push par défaut de Braze, ajoutez le code suivant à la méthode application:didReceiveRemoteNotification:fetchCompletionHandler: de votre application :

1
2
3
4
5
6
7
BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleBackgroundNotificationWithUserInfo:userInfo
                                                                                                       fetchCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler(UIBackgroundFetchResultNoData);

Puis ajoutez le code suivant à la méthode (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: de votre application :

1
2
3
4
5
6
7
BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleUserNotificationWithResponse:response
                                                                                                  withCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler();
Gestion des notifications push au premier plan

Pour activer les notifications push au premier plan et permettre à Braze de les reconnaître lorsqu’elles sont reçues, implémentez UNUserNotificationCenter.userNotificationCenter(_:willPresent:withCompletionHandler:). Si un utilisateur appuie sur votre notification au premier plan, le délégué push de userNotificationCenter(_:didReceive:withCompletionHandler:) sera appelé et Braze enregistrera l’événement push click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func userNotificationCenter(
  _ center: UNUserNotificationCenter,
  willPresent notification: UNNotification,
  withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions
) -> Void) {
  if let braze = AppDelegate.braze {
    // Forward notification payload to Braze for processing.
    braze.notifications.handleForegroundNotification(notification: notification)
  }

  // Configure application's foreground notification display options.
  if #available(iOS 14.0, *) {
    completionHandler([.list, .banner])
  } else {
    completionHandler([.alert])
  }
}

Pour activer les notifications push au premier plan et permettre à Braze de les reconnaître lorsqu’elles sont reçues, implémentez userNotificationCenter:willPresentNotification:withCompletionHandler:. Si un utilisateur appuie sur votre notification au premier plan, le délégué push de userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: sera appelé et Braze enregistrera l’événement push click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  if (AppDelegate.braze != nil) {
    // Forward notification payload to Braze for processing.
    [AppDelegate.braze.notifications handleForegroundNotificationWithNotification:notification];
  }

  // Configure application's foreground notification display options.
  if (@available(iOS 14.0, *)) {
    completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
  } else {
    completionHandler(UNNotificationPresentationOptionAlert);
  }
}

Notifications d’essais

Si vous souhaitez tester des notifications push et in-app à l’aide de la ligne de commande, vous pouvez envoyer une seule notification par le terminal via cURL et l’API d’envoi de messages. Vous devrez remplacer les champs suivants par les valeurs correctes pour votre cas de test :

  • YOUR_API_KEY - disponible dans Réglages > Clés API.
  • YOUR_EXTERNAL_USER_ID - disponible sur la page Recherche d’utilisateurs. Pour plus d’informations, reportez-vous à la rubrique Attribution d’ID d’utilisateur.
  • YOUR_KEY1 (facultatif)
  • YOUR_VALUE1 (facultatif)

Dans l’exemple suivant, l’instance US-01 est utilisée. Si vous n’êtes pas sur cette instance, reportez-vous à notre documentation API pour savoir à quel endpoint adresser vos requêtes.

1
2
3
4
5
6
7
8
9
10
11
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
  "external_user_ids":["YOUR_EXTERNAL_USER_ID"],
  "messages": {
    "apple_push": {
      "alert":"Test push",
      "extra": {
        "YOUR_KEY1":"YOUR_VALUE1"
      }
    }
  }
}' https://rest.iad-01.braze.com/messages/send

S’abonner aux mises à jour par notification push

Pour accéder aux charges utiles des notifications push traitées par Braze, utilisez la méthode Braze.Notifications.subscribeToUpdates(payloadTypes:_:).

Vous pouvez utiliser le paramètre payloadTypes pour indiquer si vous souhaitez vous abonner à des notifications concernant des événements push ouverts, des événements push reçus ou les deux.

1
2
3
4
5
6
// This subscription is maintained through a Braze cancellable, which will observe for changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.notifications.subscribeToUpdates(payloadTypes: [.open, .received]) { payload in
  print("Braze processed notification with title '\(payload.title)' and body '\(payload.body)'")
}
1
2
3
4
5
NSInteger filtersValue = BRZNotificationsPayloadTypeFilter.opened.rawValue | BRZNotificationsPayloadTypeFilter.received.rawValue;
BRZNotificationsPayloadTypeFilter *filters = [[BRZNotificationsPayloadTypeFilter alloc] initWithRawValue: filtersValue];
BRZCancellable *cancellable = [notifications subscribeToUpdatesWithPayloadTypes:filters update:^(BRZNotificationsPayload * _Nonnull payload) {
  NSLog(@"Braze processed notification with title '%@' and body '%@'", payload.title, payload.body);
}];

Amorces de notifications push

Les campagnes d’amorces de notifications push encouragent vos utilisateurs à activer les notifications push sur leur appareil pour votre appli. Ceci peut se faire sans personnalisation du SDK, grâce à notre amorce de notifications push sans code.

Gestion dynamique des passerelles APN

La gestion dynamique de la passerelle du service de notification push d’Apple (APNs) améliore la fiabilité et l’efficacité des notifications push d’iOS en détectant automatiquement l’environnement APNs adéquat. Auparavant, vous deviez sélectionner manuellement des environnements APN (développement ou production) pour vos notifications push, ce qui entraînait parfois des configurations de passerelle incorrectes, des échecs de réception/distribution et des erreurs BadDeviceToken.

Grâce à la gestion dynamique des passerelles APN, vous aurez :

  • Amélioration de la fiabilité : Les notifications sont toujours envoyées à l’environnement des APN corrects, ce qui réduit les échecs de réception/distribution.
  • Configuration simplifiée : Vous n’avez plus besoin de gérer manuellement les paramètres des passerelles APN.
  • Résilience aux erreurs : Les valeurs invalides ou manquantes de la passerelle sont traitées avec élégance, ce qui permet d’assurer un service ininterrompu.

Conditions préalables

Braze prend en charge la gestion des passerelles APN dynamiques pour les notifications push sur iOS avec la condition de version du SDK suivante :

Fonctionnement

Lorsqu’une app iOS s’intègre au SDK Swift de Braze, elle envoie des données liées à l’appareil, notamment […] aps-environment à l’API SDK de Braze, si elle est disponible. La valeur apns_gateway indique si l’application utilise l’environnement APN de développement (dev) ou de production (prod).

Braze enregistre également la valeur de la passerelle signalée pour chaque appareil. Si une nouvelle valeur de passerelle valide est reçue, Braze met automatiquement à jour la valeur stockée.

Lorsque Braze envoie une notification push :

  • Si une valeur de passerelle valide (dev ou prod) est enregistrée pour l’appareil, Braze l’utilise pour déterminer l’environnement APN correct.
  • Si aucune valeur de passerelle n’est enregistrée, Braze utilise par défaut l’environnement des APN configuré dans la page Paramètres de l’application.

Foire aux questions

Pourquoi cette fonctionnalité a-t-elle été introduite ?

Grâce à la gestion dynamique des passerelles APN, l’environnement adéquat est sélectionné automatiquement. Auparavant, vous deviez configurer manuellement la passerelle APN, ce qui pouvait entraîner des erreurs sur BadDeviceToken, l’invalidation des jetons et d’éventuels problèmes de limitation du débit des APN.

Quel est l’impact sur la performance de la réception/distribution ?

Cette fonctionnalité améliore les taux de réception/distribution en acheminant toujours les jetons push vers l’environnement des APN corrects, évitant ainsi les échecs causés par des passerelles mal configurées.

Puis-je désactiver cette fonctionnalité ?

La gestion dynamique des passerelles APN est activée par défaut et permet d’améliorer la fiabilité. Si vous avez des cas d’utilisation spécifiques qui nécessitent une sélection manuelle de la passerelle, contactez l’assistance de Braze.

Prerequisites

Before you can use this feature, you’ll need to integrate the Web Braze SDK.

Push protocols

Web push notifications are implemented using the W3C push standard, which most major browsers support. For more information on specific push protocol standards and browser support, you can review resources from Apple Mozilla and Microsoft.

Setting up push notifications

Step 1: Configure your service worker

In your project’s service-worker.js file, add the following snippet and set the manageServiceWorkerExternally initialization option to true when initializing the Web SDK.

Step 2: Register the browser

To immediately request push permissions from a user so their browser can receive push notifications, call braze.requestPushPermission(). To test if push is supported in their browser first, call braze.isPushSupported().

You can also send a soft push prompt to the user before requesting push permission to show your own push-related UI.

Step 3: Disable skipWaiting (optional)

The Braze service worker file will automatically call skipWaiting upon install. If you’d like to disable this functionality, add the following code to your service worker file, after importing Braze:

Unsubscribing a user

To unsubscribe a user, call braze.unregisterPush().

Alternate domains

To integrate web push, your domain must be secure, which generally means https, localhost, and other exceptions as defined in the W3C push standard. You’ll also need to be able to register a Service Worker at the root of your domain, or at least be able to control the HTTP headers for that file. This article covers how to integrate Braze Web Push on an alternate domain.

Use cases

If you can’t meet all of the criteria outlined in the W3C push standard, you can use this method to add a push prompt dialog to your website instead. This can be helpful if you want to let your users opt-in from an http website or a browser extension popup that’s preventing your push prompt from displaying.

Considerations

Keep in mind, like many workarounds on the web, browsers continually evolve, and this method may not be viable in the future. Before continuing, ensure that:

  • You own a separate secure domain (https://) and permissions to register a Service Worker on that domain.
  • Users are logged in to your website which ensures push tokens are match to the correct profile.

Setting up an alternate push domain

To make the following example clear, we’ll use use http://insecure.com and https://secure.com as our two domains with the goal of getting visitors to register for push on http://insecure.com. This example could also be applied to a chrome-extension:// scheme for a browser extension’s popup page.

Step 1: Initiate prompting flow

On insecure.com, open a new window to your secure domain using a URL parameter to pass the currently logged-in user’s Braze external ID.

http://insecure.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<button id="opt-in">Opt-In For Push</button>
<script>
// the same ID you would use with `braze.changeUser`:
const user_id = getUserIdSomehow();
// pass the user ID into the secure domain URL:
const secure_url = `https://secure.com/push-registration.html?external_id=${user_id}`;

// when the user takes some action, open the secure URL in a new window
document.getElementById("opt-in").onclick = function(){
    if (!window.open(secure_url, 'Opt-In to Push', 'height=500,width=600,left=150,top=150')) {
        window.alert('The popup was blocked by your browser');
    } else {
        // user is shown a popup window
        // and you can now prompt for push in this window
    }
}
</script>

Step 2: Register for push

At this point, secure.com will open a popup window in which you can initialize the Braze Web SDK for the same user ID and request the user’s permission for Web push.

https://secure.com/push-registration.html

Step 3: Communicate between domains (optional)

Now that users can opt-in from this workflow originating on insecure.com, you may want to modify your site based on if the user is already opted-in or not. There’s no point in asking the user to register for push if they already are.

You can use iFrames and the postMessage API to communicate between your two domains.

insecure.com

On our insecure.com domain, we will ask the secure domain (where push is actually registered) for information on the current user’s push registration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- Create an iframe to the secure domain and run getPushStatus onload-->
<iframe id="push-status" src="https://secure.com/push-status.html" onload="getPushStatus()" style="display:none;"></iframe>

<script>
function getPushStatus(event){
    // send a message to the iframe asking for push status
    event.target.contentWindow.postMessage({type: 'get_push_status'}, 'https://secure.com');
    // listen for a response from the iframe's domain
    window.addEventListener("message", (event) => {
        if (event.origin === "http://insecure.com" && event.data.type === 'set_push_status') {
            // update the page based on the push permission we're told
            window.alert(`Is user registered for push? ${event.data.isPushPermissionGranted}`);
        }
    }   
}
</script>

secure.com/push-status.html

Frequently Asked Questions (FAQ)

Service workers

What if I can’t register a service worker in the root directory?

By default, a service worker can only be used within the same directory it is registered in. For example, if your service worker file exists in /assets/service-worker.js, it would only be possible to register it within example.com/assets/* or a subdirectory of the assets folder, but not on your homepage (example.com/). For this reason, it is recommended to host and register the service worker in the root directory (such as https://example.com/service-worker.js).

If you cannot register a service worker in your root domain, an alternative approach is to use the Service-Worker-Allowed HTTP header when serving your service worker file. By configuring your server to return Service-Worker-Allowed: / in the response for the service worker, this will instruct the browser to broaden the scope and allow it to be used from within a different directory.

Can I create a service worker using a Tag Manager?

No, service workers must be hosted on your website’s server and can’t be loaded via Tag Manager.

Site security

Is HTTPS required?

Yes. Web standards require that the domain requesting push notification permission be secure.

When is a site considered “secure”?

A site is considered secure if it matches one of the following secure-origin patterns. Braze Web push notifications are built on this open standard, so man-in-the-middle attacks are prevented.

  • (https, , *)
  • (wss, *, *)
  • (, localhost, )
  • (, .localhost, *)
  • (, 127/8, )
  • (, ::1/128, *)
  • (file, *, —)
  • (chrome-extension, *, —)

What if a secure site is not available?

While industry best practice is to make your whole site secure, customers who cannot secure their site domain can work around the requirement by using a secure modal. Read more in our guide to using Alternate push domain or view a working demo.

About push notifications for Android TV

While not a native feature, Android TV push integration is made possible by leveraging the Braze Android SDK and Firebase Cloud Messaging to register a push token for Android TV. It is, however, necessary to build a UI to display the notification payload after it is received.

Prerequisites

To use this feature, you’ll need to complete the following:

Setting up push notifications

To set up push notifications for Android TV:

  1. Create a custom view in your app to display your notifications.
  2. Create a custom notification factory. This will override the default SDK behavior and allow you to manually display the notifications. By returning null, this will prevent the SDK from processing and will require custom code to display the notification. After these steps have been completed, you can start sending push to Android TV!

  3. (Optional) To track click analytics effectively, set up click analytics tracking. This can be achieved by creating a push callback to listen for Braze push opened and received intents.

Testing Android TV push notifications

To test if your push implementation is successful, send a notification from the Braze dashboard as you would normally for an Android device.

  • If the application is closed: The push message will display a toast notification on the screen.
  • If the application is open: You have the opportunity to display the message in your own hosted UI. We recommend following the UI styling of our Android Mobile SDK in-app messages.

Best practices

For marketers using Braze, launching a campaign to Android TV will be identical to launching a push to Android mobile apps. To target these devices exclusively, we recommend selecting the Android TV App in segmentation.

The delivered and clicked response returned by FCM will follow the same convention as a mobile Android device; therefore, any errors will be visible in the message activity log.

Prerequisites

Before you can use this feature, you’ll need to integrate the Cordova Braze SDK. After you integrate the SDK, basic push notification functionality is enabled by default. To use rich push notifications and push stories, you’ll need to set them up individually.

Disabling basic push notifications (iOS only)

After you integrate the Braze Cordova SDK for iOS, basic push notification functionality is enabled by default. To disable this functionality in your iOS app, add the following to your config.xml file. For more information, see Optional configurations.

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK de Flutter Braze.

Setting up push notifications

Step 1: Complete the initial setup

Step 1.1: Register for push

Register for push using Google’s Firebase Cloud Messaging (FCM) API. For a full walkthrough, refer to the following steps from the Native Android push integration guide:

  1. Add Firebase to your project.
  2. Add Cloud Messaging to your dependencies.
  3. Create a service account.
  4. Generate JSON credentials.
  5. Upload your JSON credentials to Braze.

Step 1.2: Get your Google Sender ID

First, go to Firebase Console, open your project, then select  Settings > Project settings.

The Firebase project with the "Settings" menu open.

Select Cloud Messaging, then under Firebase Cloud Messaging API (V1), copy the Sender ID to your clipboard.

The Firebase project's "Cloud Messaging" page with the "Sender ID" highlighted.

Step 1.3: Update your braze.xml

Add the following to your braze.xml file. Replace FIREBASE_SENDER_ID with the sender ID you copied previously.

1
2
<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Step 1.1: Upload APNs certificates

Generate an Apple Push Notification service (APNs) certificate and uploaded it to the Braze dashboard. For a full walkthrough, see Uploading your APNs certificate.

Step 1.2: Add push notification support to your app

Follow the native iOS integration guide.

Step 2: Listen for push notification events (optional)

To listen for push notification events that Braze has detected and handled, call subscribeToPushNotificationEvents() and pass in an argument to execute.

1
2
3
4
5
6
7
8
9
10
// Create stream subscription
StreamSubscription pushEventsStreamSubscription;

pushEventsStreamSubscription = braze.subscribeToPushNotificationEvents((BrazePushEvent pushEvent) {
  print("Push Notification event of type ${pushEvent.payloadType} seen. Title ${pushEvent.title}\n and deeplink ${pushEvent.url}");
  // Handle push notification events
});

// Cancel stream subscription
pushEventsStreamSubscription.cancel();
Push notification event fields

For a full list of push notification fields, refer to the table below:

Step 3: Test displaying push notifications

To test your integration after configuring push notifications in the native layer:

  1. Set an active user in the Flutter application. To do so, initialize your plugin by calling braze.changeUser('your-user-id').
  2. Head to Campaigns and create a new push notification campaign. Choose the platforms that you’d like to test.
  3. Compose your test notification and head over to the Test tab. Add the same user-id as the test user and click Send Test.
  4. You should receive the notification on your device shortly. You may need to check in the Notification Center or update Settings if it doesn’t display.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK Android Braze.

Mise en place des notifications push

Les téléphones récents fabriqués par Huawei sont équipés des services mobiles Huawei (HMS), un service utilisé pour envoyer des notifications push au lieu de recourir à Firebase Cloud Messaging (FCM) de Google.

Étape 1 : Enregistrer un compte de développeur Huawei

Avant de commencer, vous devrez vous enregistrer et configurer un compte de développeur Huawei. Dans votre compte Huawei, allez dans Mes projets > Paramètres du projet > Informations sur l’application, et notez les adresses App ID et App secret.

Étape 2 : Créer une nouvelle application Huawei dans le tableau de bord de Braze

Dans le tableau de bord de Braze, allez dans Paramètres de l’application, répertorié sous la navigation Paramètres.

Cliquez sur + Ajouter une application, fournissez un nom (comme Mon application Huawei) et sélectionnez Android comme plateforme.

Une fois que votre nouvelle application Braze a été créée, trouvez les paramètres de notification push et sélectionnez Huawei en tant que fournisseur de notification push. Ensuite, fournissez votre Huawei Client Secret et Huawei App ID.

Étape 3 : Intégrer le SDK de messagerie Huawei à votre application

Huawei a fourni un codelab d’intégration Android détaillant l’intégration du Huawei Messaging Service dans votre application. Suivez ces étapes pour commencer.

Après avoir terminé le codelab, vous devrez créer un service de messages Huawei personnalisé pour obtenir des jetons de poussée et envoyer des messages au SDK de Braze.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class CustomPushService extends HmsMessageService {
  @Override
  public void onNewToken(String token) {
    super.onNewToken(token);
    Braze.getInstance(this.getApplicationContext()).setRegisteredPushToken(token);
  }

  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(this.getApplicationContext(), remoteMessage.getDataOfMap())) {
      // Braze has handled the Huawei push notification
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
class CustomPushService: HmsMessageService() {
  override fun onNewToken(token: String?) {
    super.onNewToken(token)
    Braze.getInstance(applicationContext).setRegisteredPushToken(token!!)
  }

  override fun onMessageReceived(hmsRemoteMessage: RemoteMessage?) {
    super.onMessageReceived(hmsRemoteMessage)
    if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(applicationContext, hmsRemoteMessage?.dataOfMap)) {
      // Braze has handled the Huawei push notification
    }
  }
}

Après avoir ajouté votre service de notification push personnalisé, ajoutez les éléments suivants à votre AndroidManifest.xml :

1
2
3
4
5
6
7
<service
  android:name="package.of.your.CustomPushService"
  android:exported="false">
  <intent-filter>
    <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
  </intent-filter>
</service>

Étape 4 : Testez vos notifications push (facultatif)

À ce stade, vous avez créé une nouvelle application Android Huawei dans le tableau de bord de Braze, l’avez configurée avec vos identifiants de développeur Huawei et avez intégré les SDK Braze et Huawei dans votre application.

Ensuite, nous pouvons tester l’intégration en essayant une nouvelle campagne de notifications push dans Braze.

Étape 4.1 : Créer une nouvelle campagne de notifications push

Dans la page Campagnes, créez une nouvelle campagne et choisissez Notification push comme type de message.

Après avoir nommé votre campagne, choisissez Android Push comme plateforme de push.

Le compositeur de création de campagne affiche les plates-formes de poussée disponibles.

Ensuite, composez votre campagne de notification push avec un titre et un message.

Étape 4.2 : Envoyer un test de notification push

Dans l’onglet Test, entrez votre ID utilisateur, que vous avez défini dans votre application à l’aide de la méthodechangeUser(USER_ID_STRING) , et cliquez sur Envoyer le test pour envoyer un push de test.

L'onglet test du compositeur de création de campagne montre que vous pouvez vous envoyer un message test en indiquant votre ID utilisateur et en le saisissant dans le champ "Ajouter des utilisateurs individuels".

À ce stade, vous devriez recevoir une notification push de test sur votre appareil Huawei (HMS) de la part de Braze.

Étape 4.3 : Mise en place de la segmentation Huawei (facultatif)

Étant donné que votre application Huawei dans le tableau de bord de Braze est basée sur la plateforme de notification push Android, vous avez la possibilité d’envoyer des notifications push à tous les utilisateurs Android (Firebase Cloud Messaging et Huawei Mobile Services), ou vous pouvez choisir de segmenter votre audience de campagne pour des applications spécifiques.

Pour envoyer des messages push uniquement aux applications Huawei, créez un nouveau segment et sélectionnez votre application Huawei dans la section Apps.

Bien entendu, si vous souhaitez envoyer le même push à tous les fournisseurs de push Android, vous pouvez choisir de ne pas spécifier l’application qui enverra à toutes les applications Android configurées dans l’espace de travail actuel.

Prerequisites

Before you can use this feature, you’ll need to integrate the React Native Braze SDK.

Mise en place des notifications push

Étape 1 : Terminer la configuration initiale

Conditions préalables

Avant de pouvoir utiliser Expo pour les notifications push, vous devez configurer le plugin Expo de Braze.

Étape 1.1 : Mettez à jour votre fichier app.json

Mettez ensuite à jour votre fichier app.json pour Android et iOS :

  • Android : Ajoutez l’option enableFirebaseCloudMessaging.
  • iOS : Ajoutez l’option enableBrazeIosPush.

É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.

Le projet Firebase avec le menu Paramètres ouvert.

Sélectionnez Messagerie Cloud, puis sous API Firebase Cloud Messaging (V1), copiez l’ID de l’expéditeur dans votre presse-papiers.

La page Messagerie Cloud du projet Firebase avec l'ID de l'expéditeur mis en évidence.

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
        }
      ],
    ]
  }
}

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.

Si vous n’utilisez pas le plugin Braze Expo, ou si vous souhaitez plutôt configurer ces paramètres de manière native, inscrivez-vous à push en vous référant au guide d’intégration native de push Android.

Si vous n’utilisez pas le plugin Braze Expo, ou si vous souhaitez plutôt configurer ces paramètres de manière native, inscrivez-vous à push en vous référant aux étapes suivantes du guide de l’intégration push iOS native :

Étape 1.1 : Demande d’autorisation de pousser

Si vous n’avez pas l’intention de demander des permissions push au lancement de l’application, omettez l’appel à requestAuthorizationWithOptions:completionHandler: dans votre AppDelegate. Passez ensuite à l’étape 2. Sinon, suivez le guide d’intégration native d’iOS.

Étape 1.2 (facultative) : 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.

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 :

É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, mettez d’abord en œuvre les étapes décrites dans la bibliothèque React Native Linking, ou avec la solution de votre choix. Ensuite, suivez les étapes supplémentaires ci-dessous.

Pour en savoir plus sur les liens profonds, consultez notre article de FAQ.

Si vous utilisez le plugin Braze Expo, vous pouvez gérer automatiquement les liens profonds de notification push en réglant androidHandlePushDeepLinksAutomatically sur true dans votre app.json.

Pour gérer manuellement les liens profonds, reportez-vous à la documentation native d’Android : Création de liens profonds.

Étape 3.1 : Stocker la charge utile de la notification push au lancement de l’application.

Pour iOS, ajoutez populateInitialPayloadFromLaunchOptions à 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] populateInitialPayloadFromLaunchOptions:launchOptions];

  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

Étape 3.2 : Gestion des liens profonds à partir d’un état fermé

En plus des scénarios de base gérés par React Native Linking, mettez en œuvre la méthode Braze.getInitialPushPayload et récupérez la valeur url pour prendre en compte les liens profonds issus 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
// Handles deep links when an iOS app is launched from a hard close via push click.
// This edge case is not handled in the React Native Linking library and is provided as a workaround by Braze.
Braze.getInitialPushPayload(pushPayload => {
  if (pushPayload) {
    console.log('Braze.getInitialPushPayload is ' + pushPayload);
    showToast('Initial URL is ' + pushPayload.url);
    handleOpenUrl({ pushPayload.url });
  }
});

Étape 3.3 Activer les liens universels (facultatif)

Pour activer la prise en charge de la liaison universelle, créez un fichier BrazeReactDelegate.h dans votre répertoire iOS, puis ajoutez l’extrait de code suivant.

1
2
3
4
5
6
#import <Foundation/Foundation.h>
#import <BrazeKit/BrazeKit-Swift.h>

@interface BrazeReactDelegate: NSObject<BrazeDelegate>

@end

Ensuite, créez un fichier BrazeReactDelegate.m et ajoutez-y l’extrait de code suivant. Remplacez YOUR_DOMAIN_HOST par votre domaine réel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import "BrazeReactDelegate.h"
#import <UIKit/UIKit.h>

@implementation BrazeReactDelegate

/// This delegate method determines whether to open a given URL.
///
/// Reference the `BRZURLContext` object to get additional details about the URL payload.
- (BOOL)braze:(Braze *)braze shouldOpenURL:(BRZURLContext *)context {
  if ([[context.url.host lowercaseString] isEqualToString:@"YOUR_DOMAIN_HOST"]) {
    // Sample custom handling of universal links
    UIApplication *application = UIApplication.sharedApplication;
    NSUserActivity* userActivity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
    userActivity.webpageURL = context.url;
    // Routes to the `continueUserActivity` method, which should be handled in your `AppDelegate`.
    [application.delegate application:application
                 continueUserActivity:userActivity restorationHandler:^(NSArray<id<UIUserActivityRestoring>> * _Nullable restorableObjects) {}];
    return NO;
  }
  // Let Braze handle links otherwise
  return YES;
}

@end

Ensuite, créez et enregistrez votre BrazeReactDelegate dans didFinishLaunchingWithOptions du fichier AppDelegate.m de votre projet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#import "BrazeReactUtils.h"
#import "BrazeReactDelegate.h"

@interface AppDelegate ()

// Keep a strong reference to the BrazeDelegate to ensure it is not deallocated.
@property (nonatomic, strong) BrazeReactDelegate *brazeDelegate;

@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // Other setup code

  self.brazeDelegate = [[BrazeReactDelegate alloc] init];
  braze.delegate = self.brazeDelegate;
}

Pour un exemple d’intégration, référez-vous à notre exemple d’application ici.

Étape 4 : Envoyer une notification push test

À ce stade, vous devriez pouvoir envoyer des notifications aux appareils. Suivez ces étapes pour tester votre intégration de notification push.

  1. Définissez un utilisateur actif dans l’application React native en appelant la méthode Braze.changeUserId('your-user-id').
  2. Allez dans Campagnes et créez une nouvelle campagne de notification push. Choisissez les plateformes que vous souhaitez tester.
  3. 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.

Une campagne push de Braze montrant que vous pouvez ajouter votre propre ID utilisateur en tant que destinataire test pour tester votre notification push.

Utiliser le plugin Expo

Après avoir configuré les notifications push pour Expo, vous pouvez l’utiliser pour gérer les comportements de notifications push suivants - sans avoir besoin d’écrire le moindre code dans les couches natives d’Android ou d’iOS.

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"
        }
      ]
    ]
  }
}

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.

Résolution des problèmes

Voici les étapes de résolution des problèmes les plus courantes pour les intégrations de notifications push avec le SDK React Native et le plugin Expo de Braze.

Les notifications push ne fonctionnent plus

Si les notifications push via le plugin Expo ont cessé de fonctionner :

  1. Vérifiez que le SDK de Braze assure toujours le suivi des sessions.
  2. Vérifiez que le SDK n’a pas été désactivé par un appel explicite ou implicite à wipeData.
  3. Examinez les mises à jour récentes d’Expo ou des bibliothèques associées, car il peut y avoir des conflits avec votre configuration Braze.
  4. Examinez les dépendances de projet récemment ajoutées et vérifiez si elles remplacent manuellement vos méthodes de délégué de notification push existantes.

Le jeton de l’appareil ne s’enregistre pas dans Braze

Si le jeton de votre appareil ne s’enregistre pas dans Braze, examinez d’abord les notifications push qui ne fonctionnent plus.

Si votre problème persiste, il se peut qu’une dépendance distincte interfère avec votre configuration de notification push de Braze. Vous pouvez essayer de le supprimer ou d’appeler manuellement Braze.registerPushToken à la place.

Prerequisites

Before you can use this feature, you’ll need to integrate the Web Braze SDK. Vous devrez également configurer les notifications push pour le SDK Web. Notez que vous ne pouvez envoyer des notifications push qu’aux utilisateurs d’iOS et d’iPadOS qui utilisent Safari v16.4 ou une version ultérieure.

Configurer Safari push pour les mobiles

Étape 1 : Créer un fichier de manifeste

Un manifeste d’application web est un fichier JSON qui contrôle la manière dont votre site web est présenté lorsqu’il est installé sur l’écran d’accueil d’un utilisateur.

Par exemple, vous pouvez définir la couleur du thème d’arrière-plan et l’icône que l’App Switcher utilise, si le rendu est en plein écran pour ressembler à une application native, ou si l’application doit s’ouvrir en mode paysage ou portrait.

Créez un nouveau fichier manifest.json dans le répertoire racine de votre site Web, avec les champs obligatoires suivants.

1
2
3
4
5
6
7
8
9
{
  "name": "your app name",
  "short_name": "your app name",
  "display": "fullscreen",
  "icons": [{
    "src": "favicon.ico",
    "sizes": "128x128",
  }]
}

La liste complète des champs pris en charge est disponible ici.

Ajouter la balise suivante <link> à l’élément <head> de votre site Web pointant vers l’endroit où votre fichier de manifeste est hébergé.

1
<link rel="manifest" href="/manifest.json" />

Étape 3 : Ajouter un service de traitement

Votre site Web doit disposer d’un fichier de service de traitement qui importe la bibliothèque de services de traitement de Braze, comme décrit dans notre guide d’intégration des notifications push Web.

Étape 4 : Ajouter à l’écran d’accueil

Les navigateurs populaires (tels que Safari, Chrome, FireFox et Edge) prennent tous en charge les notifications push web dans leurs versions ultérieures. Pour demander une autorisation push sur iOS ou iPadOS, votre site web doit être ajouté à l’écran d’accueil de l’utilisateur en sélectionnant Partager vers > Ajouter à l’écran d’accueil. Ajouter à l’écran d’accueil permet aux utilisateurs de mettre votre site web en signet, en ajoutant votre icône à leur précieux écran d’accueil.

Un iPhone montrant les options permettant de mettre un site web en signet et de l'enregistrer sur l'écran d'accueil

Étape 5 : Afficher l’invite de notification push native

Une fois l’application ajoutée à votre écran d’accueil, vous pouvez désormais demander une autorisation push lorsque l’utilisateur effectue une action (en cliquant sur un bouton, par exemple). Ceci peut être effectué à l’aide de la méthode requestPushPermission ou à l’aide d’un message in-app d’amorce de notification push sans code.

Une notification push demandant d'"autoriser" ou de "ne pas autoriser" les notifications

Par exemple :

1
2
3
4
5
6
7
8
9
import { requestPushPermission } from "@braze/web-sdk";

button.onclick = function(){
    requestPushPermission(() => {
        console.log(`User accepted push prompt`);
    }, (temporary) => {
        console.log(`User ${temporary ? "temporarily dismissed" : "permanently denied"} push prompt`);
    });
};

Étapes suivantes

Ensuite, envoyez-vous un message de test pour valider l’intégration. Une fois votre intégration terminée, vous pouvez utiliser nos messages d’amorce de notification push sans code pour optimiser vos taux d’abonnement aux notifications push.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK d’Unity Braze.

Setting up push notification

Step 1: Set up the platform

Step 1.1: Enable Firebase

To get started, follow the Firebase Unity setup documentation.

Step 1.2: Set your Firebase credentials

You need to input your Firebase Server Key and Sender ID into the Braze dashboard. To do this, log in to the Firebase Developers Console and select your Firebase project. Next, select Cloud Messaging under Settings and copy the Server Key and Sender ID:

In Braze, select your Android app on the App Settings page under Manage Settings. Next, enter your Firebase Server Key in the Firebase Cloud Messaging Server Key field and Firebase Sender ID in the Firebase Cloud Messaging Sender ID field.

Step 1.1: Verify integration method

Braze provides a native Unity solution for automating iOS push integrations. If you you’d like to set up and manage your integration manually instead, see Swift: Push Notifications.

Otherwise, continue to the next step.

Step 1.1: Enable ADM

  1. Create an account with the Amazon Apps & Games Developer Portal if you have not already done so.
  2. Obtain OAuth credentials (Client ID and Client Secret) and an ADM API key.
  3. Enable Automatic ADM Registration Enabled in the Unity Braze Configuration window.
    • Alternatively, you may add the following line to your res/values/braze.xml file to enable ADM registration:
1
  <bool name="com_braze_push_adm_messaging_registration_enabled">true</bool>

Step 2: Configure push notifications

Step 2.1: Configure push settings

The Braze SDK can automatically handle push registration with the Firebase Cloud Messaging Servers to have devices receive push notifications. In Unity, enable Automate Unity Android Integration, then configure the following Push Notification settings.

Step 2.1: Upload your APNs token

Before you can send an iOS push notification using Braze, you need to upload your .p8 push notification file, as described in Apple’s developer documentation:

  1. In your Apple developer account, go to Certificates, Identifiers & Profiles.
  2. Under Keys, select All and click the add button (+) in the upper-right corner.
  3. Under Key Description, enter a unique name for the signing key.
  4. Under Key Services, select the Apple Push Notification service (APNs) checkbox, then click Continue. Click Confirm.
  5. Note the key ID. Click Download to generate and download the key. Make sure to save the downloaded file in a secure place, as you cannot download this more than once.
  6. In Braze, go to Settings > App Settings and upload the .p8 file under Apple Push Certificate. You can upload either your development or production push certificate. To test push notifications after your app is live in the App Store, its recommended to set up a separate workspace for the development version of your app.
  7. When prompted, enter your app’s bundle ID, key ID, and team ID. You’ll also need to specify whether to send notifications to your app’s development or production environment, which is defined by its provisioning profile.
  8. When you’re finished, select Save.

Step 2.2: Enable automatic push

Open the Braze Configuration Settings in the Unity Editor by navigating to Braze > Braze Configuration.

Check Integrate Push With Braze to automatically register users for push notifications, pass push tokens to Braze, track analytics for push opens, and take advantage of our default push notification handling.

Step 2.3: Enable background push (optional)

Check Enable Background Push if you want to enable background mode for push notifications. This allows the system to wake your application from the suspended state when a push notification arrives, enabling your application to download content in response to push notifications. Checking this option is required for our uninstall tracking functionality.

The Unity editor shows the Braze configuration options. In this editor, the "Automate Unity iOS integration", "Integrate push with braze", and "Enable background push" are enabled.

Step 2.4: Disable automatic registration (optional)

Users who have not yet opted-in to push notifications will automatically be authorized for push upon opening your application. To disable this feature and manually register users for push, check Disable Automatic Push Registration.

  • If Disable Provisional Authorization is not checked on iOS 12 or later, the user will be provisionally (silently) authorized to receive quiet push. If checked, the user will be shown the native push prompt.
  • If you need to configure exactly when the prompt is shown at runtime, disable automatic registration from the Braze configuration editor and use AppboyBinding.PromptUserForPushPermissions() instead.

The Unity editor shows the Braze configuration options. In this editor, the "Automate Unity iOS integration", "integrate push with braze", and "disable automatic push registration" are enabled.

Step 2.1: Update AndroidManifest.xml

If your app does not have an AndroidManifest.xml, you can use the following as a template. Otherwise, if you already have an AndroidManifest.xml, ensure that any of the following missing sections are added to your existing AndroidManifest.xml.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <permission
    android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE"
    android:protectionLevel="signature" />
  <uses-permission android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE" />
  <uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />

  <application android:icon="@drawable/app_icon" 
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity" 
      android:label="@string/app_name" 
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <receiver android:name="com.braze.push.BrazeAmazonDeviceMessagingReceiver" android:permission="com.amazon.device.messaging.permission.SEND">
      <intent-filter>
          <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
          <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
          <category android:name="REPLACE_WITH_YOUR_PACKAGE_NAME" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

Step 2.2: Store your ADM API key

First, generate an ADM API Key for your app, then save the key to a file named api_key.txt and add it in your project’s Assets/ directory.

Next, in your mainTemplate.gradle file, add the following:

1
2
3
4
5
6
7
task copyAmazon(type: Copy) {
    def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
    from unityProjectPath + '/Assets/api_key.txt'
    into new File(projectDir, 'src/main/assets')
}

preBuild.dependsOn(copyAmazon)

Step 2.3: Add ADM Jar

The required ADM Jar file may be placed anywhere in your project according to the Unity JAR documentation.

Step 2.4: Add Client Secret and Client ID to your Braze dashboard

Lastly, you must add the Client Secret and Client ID you obtained in Step 1 to the Braze dashboard’s Manage Settings page.

Step 3: Set push listeners

Step 3.1: Enable push received listener

The push received listener is fired when a user receives a push notification. To send the push payload to Unity, set the name of your game object and push the received listener callback method under the Set Push Received Listener.

Step 3.2: Enable push opened listener

The push opened listener is fired when a user launches the app by clicking on a push notification. To send the push payload to Unity, set the name of your game object and push opened listener callback method under the Set Push Opened Listener.

Step 3.3: Enable push deleted listener

The push deleted listener is fired when a user swipes away or dismisses a push notification. To send the push payload to Unity, set the name of your game object and push deleted listener callback method under the Set Push Deleted Listener.

Push listener example

The following example implements the BrazeCallback game object using a callback method name of PushNotificationReceivedCallback, PushNotificationOpenedCallback, and PushNotificationDeletedCallback respectively.

This implementation example graphic shows the Braze configuration options mentioned in the preceding sections and a C# code snippet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class MainMenu : MonoBehaviour {
  void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationReceivedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification received: " + pushNotification);   
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push received Notification event: " + pushNotification);   
#endif  
  }

  void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationOpenedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification opened: " + pushNotification);  
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push opened Notification event: " + pushNotification);   
#endif  
  }

  void PushNotificationDeletedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationDeletedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification dismissed: " + pushNotification);  
#endif
  }
}

Step 3.1: Enable push received listener

The push received listener is fired when a user receives a push notification while actively using the application (such as when the app is foregrounded). Set the push received listener in the Braze configuration editor. If you need to configure your game object listener at runtime, use AppboyBinding.ConfigureListener() and specify BrazeUnityMessageType.PUSH_RECEIVED.

The Unity editor shows the Braze configuration options. In this editor, the "Set Push Received Listener" option is expanded, and the "Game Object Name" (AppBoyCallback) and "Callback Method Name" (PushNotificationReceivedCallback) are provided.

Step 3.2: Enable push opened listener

The push opened listener is fired when a user launches the app by clicking on a push notification. To send the push payload to Unity, set the name of your game object and push opened listener callback method under the Set Push Opened Listener option:

The Unity editor shows the Braze configuration options. In this editor, the "Set Push Received Listener" option is expanded, and the "Game Object Name" (AppBoyCallback) and "Callback Method Name" (PushNotificationOpenedCallback) are provided.

If you need to configure your game object listener at runtime, use AppboyBinding.ConfigureListener() and specify BrazeUnityMessageType.PUSH_OPENED.

Push listener example

The following example implements the AppboyCallback game object using a callback method name of PushNotificationReceivedCallback and PushNotificationOpenedCallback, respectively.

This implementation example graphic shows the Braze configuration options mentioned in the preceding sections and a C# code snippet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MainMenu : MonoBehaviour {
  void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationReceivedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification received: " + pushNotification);   
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push received Notification event: " + pushNotification);   
#endif  
  }

  void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationOpenedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification opened: " + pushNotification);  
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push opened Notification event: " + pushNotification);   
#endif  
  }
}

By updating your AndroidManifest.xml in the previous step, push listeners were automatically set up when you added the following lines. So, no further setup is required.

1
2
<action android:name="com.amazon.device.messaging.intent.RECEIVE" />
<action android:name="com.amazon.device.messaging.intent.REGISTRATION" />

Optional configurations

Deep linking to in-app resources

Although Braze can handle standard deep links (such as website URLs, Android URIs, etc.) by default, creating custom deep links requires an additional Manifest setup.

For setup guidance, visit Deep Linking to In-App Resources.

Adding Braze push notification icons

To add push icons to your project, create an Android Archive (AAR) plug-in or Android library that contains the icon image files. For steps and information, refer to Unity’s documentation: Android Library Projects and Android Archive plug-ins.

Push token callback

To receive a copy of Braze device tokens from the OS, set a delegate using AppboyBinding.SetPushTokenReceivedFromSystemDelegate().

There are no optional configurations for ADM at this time.

Prerequisites

Before you can use this feature, you’ll need to integrate the Unreal Engine Braze SDK.

Mise en place des notifications push

Étape 1 : Configurez votre projet

Tout d’abord, ajoutez Firebase à votre projet Android. Pour obtenir des instructions pas à pas, consultez le guide de configuration de Firebase de Google.

Before you can send an iOS push notification using Braze, you need to upload your .p8 push notification file, as described in Apple’s developer documentation:

  1. In your Apple developer account, go to Certificates, Identifiers & Profiles.
  2. Under Keys, select All and click the add button (+) in the upper-right corner.
  3. Under Key Description, enter a unique name for the signing key.
  4. Under Key Services, select the Apple Push Notification service (APNs) checkbox, then click Continue. Click Confirm.
  5. Note the key ID. Click Download to generate and download the key. Make sure to save the downloaded file in a secure place, as you cannot download this more than once.
  6. In Braze, go to Settings > App Settings and upload the .p8 file under Apple Push Certificate. You can upload either your development or production push certificate. To test push notifications after your app is live in the App Store, its recommended to set up a separate workspace for the development version of your app.
  7. When prompted, enter your app’s bundle ID, key ID, and team ID. You’ll also need to specify whether to send notifications to your app’s development or production environment, which is defined by its provisioning profile.
  8. When you’re finished, select Save.

Étape 2 : Activer les notifications push

Ajoutez les lignes suivantes au fichier engine.ini de votre projet. Veillez à remplacer YOUR_SEND_ID par l’ID de l’expéditeur dans votre projet Firebase.

1
2
3
bEnableFirebaseCloudMessagingSupport=true
bIsFirebaseCloudMessagingRegistrationEnabled=true
FirebaseCloudMessagingSenderIdKey=YOUR_SENDER_ID

Dans le même répertoire que BrazeUPLAndroid.xmlcréez un nouveau répertoire nommé AndroidCopies et ajoutez-y votre fichier google-services.json.

Dans votre projet, allez dans Réglages > Réglages du projet > iOS > En ligne puis cochez Activer la prise en charge des notifications à distance. Une fois que vous avez terminé, vérifiez que les fonctions “push” sont activées dans votre disposition.

Configurations optionnelles

Réglage des petites et grandes icônes

Pour définir les petites et grandes icônes de notification :

  1. Ajoutez des icônes au dossier de dessin approprié (drawable par défaut) à l’intérieur du dossier AndroidCopies/res.
  2. Ajoutez braze.xml au dossier AndroidCopies/res/values pour définir les icônes. Un fichier très basique braze.xml:
    1
    2
    3
    4
    5
    
     <?xml version="1.0" encoding="utf-8"?>
     <resources>
         <drawable name="com_braze_push_small_notification_icon">@drawable/notification_small_icon</drawable>
         <drawable name="com_braze_push_large_notification_icon">@drawable/notification_large_icon</drawable>
     </resources>
    

Notifications de lancement à distance

Depuis la version 4.25.3 d’Unreal Engine, UE4 ne prend pas en charge la réception d’une notification à distance qui provoque le lancement initial de l’application. Afin de prendre en charge la réception de cette notification, nous avons créé deux patchs git à appliquer - un pour UE4 et un pour le plugin Braze SDK.

  1. Dans votre répertoire UE4 Engine Source, appliquez le patch git UE4_Engine-Cache-Launch-Remote-Notification.patch.
  2. Dans votre répertoire Braze Unreal SDK, appliquez le patch git Braze_SDK-Read-Cached-Remote-Launch-Notification.patch.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devrez intégrer le SDK Xamarin Braze.

Setting up push notifications

To integrate push notifications for Xamarin, you’ll need to complete the steps for native Android push notifications. The following steps are only a summary. For a full walkthrough, see the native push notification guide.

Step 1: Update your project

  1. Add Firebase to your Android project.
  2. Add the Cloud Messaging library to your Android project’s build.gradle:
    1
    
      implementation "google.firebase:firebase-messaging:+"
    

Step 2: Create your JSON credentials

  1. In Google Cloud, enable the Firebase Cloud Messaging API.
  2. Select Service Accounts > your project > Create Service Account, then enter a service account name, ID, and description. When you’re finished, select Create and continue.
  3. In the Role field, find and select Firebase Cloud Messaging API Admin from the list of roles.
  4. In Service Accounts, choose your project, then select  Actions > Manage Keys > Add Key > Create new key. Choose JSON, then select Create.

Step 3: Upload your JSON credentials

  1. In Braze, select  Settings > App Settings. Under your Android app’s Push Notification Settings, choose Firebase, then select Upload JSON File and upload the credentials you generated earlier. When you’re finished, select Save.
  2. Enable automatic FCM token registration, by going to Firebase Console. Open your project, then select  Settings > Project settings. Select Cloud Messaging, then under Firebase Cloud Messaging API (V1), copy the number in the Sender ID field.
  3. In your Android Studio project and the following to your braze.xml.
1
2
  <bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
  <string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Step 1: Complete the initial setup

See the Swift integration instructions for information about setting up your application with push and storing your credentials on our server. Refer to the iOS MAUI sample application for more details.

Step 2: Request push notifications permission

Our Xamarin SDK now supports automatic push set up. Set up push automation and permissions by adding the following code to your Braze instance configuration:

1
2
configuration.Push.Automation = new BRZConfigurationPushAutomation(true);
configuration.Push.Automation.RequestAuthorizationAtLaunch = false;

Refer to the iOS MAUI sample application for more details. For more details, see the Xamarin documentation for Enhanced User Notifications in Xamarin.iOS.

New Stuff!