Passer au contenu

Notifications push

Les notifications push vous permettent d’envoyer des notifications depuis votre application lorsque des événements importants se produisent. Vous pouvez envoyer une notification push lorsque vous avez de nouveaux messages instantanés à livrer, des alertes d’actualité à diffuser 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. Elles sont également plus efficaces que la récupération en arrière-plan, car votre application ne se lance que lorsque c’est nécessaire.

Conditions préalables

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

Protocoles push

Les notifications push Web sont implémentées à l’aide du standard push du W3C, pris en charge par la plupart des navigateurs principaux. Pour plus d’informations sur les standards de protocole push spécifiques et la compatibilité des navigateurs, vous pouvez consulter les ressources d’Apple, de Mozilla et de Microsoft.

Configuration des notifications push

Étape 1 : Configurer votre service de traitement

Dans le fichier service-worker.js de votre projet, ajoutez l’extrait de code suivant et définissez l’option d’initialisation manageServiceWorkerExternally sur true lors de l’initialisation du SDK Web.

Étape 2 : Enregistrer le navigateur

Pour demander immédiatement les autorisations push à un utilisateur afin que son navigateur puisse recevoir des notifications push, appelez braze.requestPushPermission(). Pour vérifier d’abord si les notifications push sont prises en charge dans son navigateur, appelez braze.isPushSupported().

Vous pouvez également envoyer une invite push non intrusive à l’utilisateur avant de demander l’autorisation push, afin d’afficher votre propre interface liée aux notifications push.

Étape 3 : Désactiver skipWaiting (optionnel)

Le fichier de service de traitement de Braze appellera automatiquement skipWaiting lors de l’installation. Si vous souhaitez désactiver cette fonctionnalité, ajoutez le code suivant à votre fichier de service de traitement, après l’importation de Braze :

Se désabonner d’un utilisateur

Pour désabonner un utilisateur, appelez braze.unregisterPush().

Domaines alternatifs

Pour intégrer la notification push Web, votre domaine doit être sécurisé, ce qui signifie généralement https, localhost et d’autres exceptions telles que définies dans le standard W3C push. Vous devez également être en mesure d’enregistrer un service de traitement à la racine de votre domaine, ou au moins de contrôler les en-têtes HTTP pour ce fichier. Cet article explique comment intégrer la notification push Web de Braze sur un domaine alternatif.

Cas d’usage

Si vous ne pouvez pas répondre à tous les critères définis dans le standard W3C push, vous pouvez utiliser cette méthode pour ajouter une boîte de dialogue d’invite push à votre site Web. Cela peut être utile si vous souhaitez permettre à vos utilisateurs de s’abonner depuis un site Web http ou une fenêtre contextuelle d’extension de navigateur qui empêche votre invite push de s’afficher.

Considérations

Gardez à l’esprit que, comme de nombreuses solutions de contournement sur le Web, les navigateurs évoluent constamment et cette méthode pourrait ne plus être viable à l’avenir. Avant de continuer, assurez-vous que :

  • Vous possédez un domaine sécurisé séparé (https://) et avez les permissions d’enregistrer un service de traitement sur ce domaine.
  • Les utilisateurs sont connectés à votre site Web, ce qui garantit que les jetons push sont associés au bon profil.

Configurer un domaine push alternatif

Pour rendre l’exemple suivant plus clair, nous utiliserons http://insecure.com et https://secure.com comme nos deux domaines, avec l’objectif de permettre aux visiteurs de s’inscrire aux notifications push sur http://insecure.com. Cet exemple pourrait également s’appliquer à un schéma chrome-extension:// pour la page de fenêtre contextuelle d’une extension de navigateur.

Étape 1 : Initier le flux d’invite

Sur insecure.com, ouvrez une nouvelle fenêtre vers votre domaine sécurisé en utilisant un paramètre d’URL pour transmettre l’ID externe Braze de l’utilisateur actuellement connecté.

http://insecure.com

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

Étape 2 : S’inscrire aux notifications push

À ce stade, secure.com ouvrira une fenêtre contextuelle dans laquelle vous pouvez initialiser le SDK Web de Braze pour le même ID utilisateur et demander la permission de l’utilisateur pour les notifications push Web.

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

Étape 3 : Communiquer entre les domaines (optionnel)

Maintenant que les utilisateurs peuvent s’abonner depuis ce flux provenant de insecure.com, vous souhaiterez peut-être modifier votre site selon que l’utilisateur est déjà abonné ou non. Il est inutile de demander à l’utilisateur de s’inscrire aux notifications push s’il l’est déjà.

Vous pouvez utiliser des iFrames et l’API postMessage pour communiquer entre vos deux domaines.

insecure.com

Sur notre domaine insecure.com, nous demanderons au domaine sécurisé (où la notification push est réellement enregistrée) des informations sur l’inscription push de l’utilisateur actuel :

<!-- 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

Questions fréquemment posées (FAQ)

Service de traitement

Que faire si je ne peux pas enregistrer un service de traitement dans le répertoire racine ?

Par défaut, un service de traitement ne peut être utilisé que dans le même répertoire que celui où il est enregistré. Par exemple, si votre fichier de service de traitement se trouve dans /assets/service-worker.js, il ne pourrait être enregistré que dans example.com/assets/* ou un sous-répertoire du dossier assets, mais pas sur votre page d’accueil (example.com/). C’est pourquoi il est recommandé d’héberger et d’enregistrer le service de traitement dans le répertoire racine (par exemple https://example.com/service-worker.js).

Si vous ne pouvez pas enregistrer un service de traitement dans votre domaine racine, une approche alternative consiste à utiliser l’en-tête HTTP Service-Worker-Allowed lors de la diffusion de votre fichier de service de traitement. En configurant votre serveur pour qu’il renvoie Service-Worker-Allowed: / dans la réponse du service de traitement, vous indiquez au navigateur d’élargir la portée et de permettre son utilisation depuis un autre répertoire.

Puis-je créer un service de traitement à l’aide d’un gestionnaire de balises ?

Non, les services de traitement doivent être hébergés sur le serveur de votre site web et ne peuvent pas être chargés via un gestionnaire de balises.

Sécurité du site

Le HTTPS est-il requis ?

Oui. Les standards web exigent que le domaine demandant l’autorisation de notification push soit sécurisé.

Quand un site est-il considéré comme « sécurisé » ?

Un site est considéré comme sécurisé s’il correspond à l’un des modèles d’origine sécurisée suivants. Les notifications push Web de Braze reposent sur ce standard ouvert, ce qui empêche les attaques de type « homme du milieu ».

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

Que faire si un site sécurisé n’est pas disponible ?

Bien que la meilleure pratique du secteur soit de sécuriser l’intégralité de votre site, les clients qui ne peuvent pas sécuriser leur domaine peuvent contourner cette exigence en utilisant une fenêtre modale sécurisée. Pour en savoir plus, consultez notre guide sur l’utilisation d’un domaine push alternatif ou visualisez une démonstration fonctionnelle.

Conditions préalables

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

Fonctionnalités intégrées

Les fonctionnalités suivantes sont intégrées au SDK Android de Braze. Pour utiliser d’autres fonctionnalités de notification push, vous devrez configurer les notifications push pour votre application.

Fonctionnalité Description
Push Stories Les Push Stories Android sont intégrées par défaut dans le SDK Android de Braze. Pour en savoir plus, consultez Push Stories.
Amorces push Les Campaigns d’amorce push encouragent vos utilisateurs à activer les notifications push sur leur appareil pour votre application. Cela peut être fait sans personnalisation du SDK en utilisant notre amorce push sans code.

À propos du cycle de vie des notifications push

Le diagramme suivant illustre la manière dont Braze gère le cycle de vie des notifications push, notamment les demandes d’autorisation, la génération de jetons et la 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

Configuration des notifications push

Limites de débit

L’API Firebase Cloud Messaging (FCM) a 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 support Firebase.

Étape 1 : Ajouter Firebase à votre projet

Commencez par ajouter Firebase à votre projet Android. Pour des instructions détaillées, consultez le guide de configuration Firebase de Google.

Étape 2 : Ajouter 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.

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

Vos dépendances devraient ressembler à ceci :

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

Étape 3 : Activer l’API Firebase Cloud Messaging

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, accédez à Service Accounts, puis sélectionnez votre projet. Sur la page Service Accounts, sélectionnez Create Service Account.

Page d'accueil du compte de service d'un projet avec « Create Service Account » mis en évidence.

Saisissez un nom, un ID et une description pour le compte de service, puis sélectionnez Create and continue.

Dans le champ Role, 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 la permission cloudmessaging.messages.create, puis choisissez-le dans la liste à la place. Lorsque vous avez terminé, sélectionnez Done.

Le formulaire « Grant this service account access to project » avec « Firebase Cloud Messaging API Admin » sélectionné comme rôle.

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

Ensuite, générez les identifiants JSON pour votre compte de service FCM. Sur Google Cloud IAM & Admin, accédez à Service Accounts, puis sélectionnez votre projet. Localisez le compte de service FCM que vous avez créé précédemment, puis sélectionnez  Actions > Manage Keys.

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

Sélectionnez Add Key > Create new key.

Le compte de service sélectionné avec le menu « Add Key » ouvert.

Choisissez JSON, puis sélectionnez Create. 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 à project_id dans votre fichier JSON.

N’oubliez pas l’emplacement de téléchargement de 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 : Charger vos identifiants JSON dans Braze

Ensuite, chargez vos identifiants JSON dans votre tableau de bord de Braze. Dans Braze, sélectionnez  Settings > App Settings.

Le menu « Settings » ouvert dans Braze avec « App Settings » mis en évidence.

Sous les Push Notification Settings de votre application Android, choisissez Firebase, puis sélectionnez Upload JSON File et chargez les identifiants que vous avez générés précédemment. Lorsque vous avez terminé, sélectionnez Save.

Le formulaire « Push Notification Settings » avec « Firebase » sélectionné comme fournisseur de notifications push.

Étape 7 : Configurer l’enregistrement automatique des jetons

Lorsqu’un de vos utilisateurs s’abonne aux notifications push, votre application doit générer un jeton FCM sur son appareil avant de pouvoir lui envoyer des notifications push. Avec le SDK de 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  Settings > Project settings.

Le projet Firebase avec le menu « Settings » ouvert.

Sélectionnez Cloud Messaging, puis sous Firebase Cloud Messaging API (V1), copiez le numéro dans le champ Sender ID.

La page « Cloud Messaging » du projet Firebase avec le « Sender ID » mis en évidence.

Ensuite, ouvrez votre projet Android Studio et utilisez votre Firebase Sender ID pour activer l’enregistrement automatique des jetons FCM dans votre braze.xml ou BrazeConfig.

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

<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 depuis les paramètres de votre projet Firebase. Votre braze.xml devrait ressembler à ceci :

<?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 :

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

Remplacez FIREBASE_SENDER_ID par la valeur que vous avez copiée depuis les paramètres de votre projet Firebase. Votre BrazeConfig devrait ressembler à ceci :

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

Utiliser plusieurs projets Firebase

Si votre application utilise plusieurs projets Firebase, suivez ces étapes :

  1. Conservez les notifications push Braze sur le projet Firebase par défaut initialisé à partir du fichier google-services.json de votre application.
  2. Si vous utilisez un service de messagerie Firebase personnalisé, suivez Enregistrer les Installation ID dans les services de messagerie Firebase personnalisés.
  3. Si votre application obtient un jeton push d’une autre manière, définissez manuellement registeredPushToken comme indiqué dans l’astuce précédente.

Pour les détails de version, consultez les journaux des modifications du SDK.

Étape 8 : Supprimer les requêtes automatiques dans votre classe Application

Pour empêcher Braze de déclencher des requêtes réseau inutiles chaque fois que vous envoyez des notifications push silencieuses, supprimez toute requête réseau automatique configurée dans la méthode onCreate() de votre classe Application. Pour plus d’informations, consultez Référence développeur Android : Application.

Afficher les notifications

Étape 1 : Enregistrer le service Firebase Messaging de Braze

Vous pouvez créer un nouveau service Firebase Messaging, utiliser un service existant ou un service non-Braze. Choisissez l’option qui correspond le mieux à vos besoins spécifiques.

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

<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 de notre système avec une clé unique afin de n’afficher 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. Consultez AndroidManifest.xml dans l’application d’exemple Firebase push.

Si vous avez déjà un service Firebase Messaging enregistré, vous pouvez transmettre les objets RemoteMessage à Braze via BrazeFirebaseMessagingService.handleBrazeRemoteMessage(). Cette méthode n’affichera une notification que si l’objet RemoteMessage provient de Braze et l’ignorera en toute sécurité dans le cas contraire.

Enregistrer les ID d’installation dans les services Firebase Messaging personnalisés

Si vous utilisez firebase-messaging v25.1.0 ou une version ultérieure, l’enregistrement Firebase utilise l’ID d’installation Firebase. Dans votre service Firebase Messaging personnalisé, remplacez onRegistered et définissez registeredPushToken.

public class MyFirebaseMessagingService extends FirebaseMessagingService {
  @Override
  public void onRegistered(String installationId) {
    super.onRegistered(installationId);
    Braze.getInstance(this).setRegisteredPushToken(installationId);
  }

  @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.
    }
  }
}
class MyFirebaseMessagingService : FirebaseMessagingService() {
  override fun onRegistered(installationId: String) {
    super.onRegistered(installationId)
    Braze.getInstance(this).registeredPushToken = installationId
  }

  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 disposez d’un autre service Firebase Messaging que vous souhaitez également utiliser, vous pouvez spécifier un service Firebase Messaging de secours à appeler si votre application reçoit une notification push qui ne provient pas de Braze.

Dans votre braze.xml, spécifiez :

<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 définissez-le via la configuration à l’exécution :

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

Étape 2 : Adapter les petites icônes aux directives de conception

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

À partir d’Android N, vous devez mettre à jour ou supprimer les ressources de petites icônes de notification qui comportent des couleurs. 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 la petite icône de notification. Autrement dit, Android convertira toutes les parties de votre petite icône de notification en monochrome, à l’exception des régions transparentes.

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

  • Supprimez toutes les couleurs de l’image à l’exception du blanc.
  • Toutes les autres régions non blanches de la ressource doivent être transparentes.

Les grandes et petites icônes illustrées ci-dessous sont des exemples d’icônes correctement conçues :

Une petite icône apparaissant dans le coin inférieur d'une grande icône à côté d'un message indiquant « Hey I'm on my way to the bar but.. »

Étape 3 : Configurer les icônes de notification

Spécifier les icônes dans braze.xml

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

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

La définition d’une petite icône de notification est obligatoire. 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 peut donner un résultat non optimal.

La définition d’une grande icône de notification est facultative mais recommandée.

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

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

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

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

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

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

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

Ce paramètre peut également être défini via la configuration à l’exécution :

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

Si vous souhaitez gérer les deep links de manière personnalisée, vous devrez créer un rappel push qui écoute les intentions de réception et d’ouverture push de Braze. Pour plus d’informations, consultez Utiliser un rappel pour les événements push.

Gestion des notifications au premier plan

Par défaut, lorsqu’une notification push arrive alors que votre application est au premier plan sur Android, le système l’affiche automatiquement. Pour que Braze traite le payload de la notification push (suivi analytique, gestion des deep links et traitement personnalisé), transmettez les données push entrantes à Braze dans votre méthode FirebaseMessagingService.onMessageReceived.

Fonctionnement

Lorsque vous appelez BrazeFirebaseMessagingService.handleBrazeRemoteMessage, Braze détermine si le payload est une notification push Braze et, le cas échéant, crée et affiche la notification avec la méthode NotificationManagerCompat. Contrairement à iOS, Android affiche les notifications indépendamment du fait que l’application soit au premier plan ou en arrière-plan.

package com.example.push;

import com.braze.push.BrazeFirebaseMessagingService;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        // Let Braze process the payload and display the notification
        if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
            // Braze successfully handled the push notification
        } else {
            // Handle non-Braze messages
        }
    }
}
package com.example.push

import com.braze.push.BrazeFirebaseMessagingService
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage

class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)

        // Let Braze process the payload and display the notification
        if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
            // Braze successfully handled the push notification
        } else {
            // Handle non-Braze messages
        }
    }
}

Pour plus d’informations, consultez l’exemple d’intégration Firebase dans le dépôt du SDK Android de Braze.

Personnaliser le comportement au premier plan

Si vous souhaitez un comportement personnalisé au premier plan, comme supprimer la notification système ou afficher une interface intégrée à l’application à la place, vous pouvez :

  • Utiliser subscribeToPushNotificationEvents pour réagir aux événements push et gérer les deep links avec la méthode BrazeNotificationUtils.routeUserWithNotificationOpenedIntent. Pour plus d’informations, consultez l’exemple push Firebase.
  • Créer et publier votre propre notification à l’aide d’une IBrazeNotificationFactory personnalisée, ou supprimer la notification en n’appelant pas notificationManager.notify dans votre flux de traitement.

Pour plus d’informations sur la personnalisation des notifications, consultez Usine de notifications personnalisée.

Suivez les instructions de la documentation développeur Android sur les deep links si vous n’avez pas encore ajouté de deep links à votre application. Pour en savoir plus sur les deep links, consultez notre article FAQ.

Le tableau de bord de Braze permet de définir des deep links ou des URL web dans les Campaigns et Canvas de notifications push qui s’ouvriront lorsque la notification est cliquée.

Le paramètre « On Click Behavior » dans le tableau de bord de Braze avec l'option « Deep Link Into Application » sélectionnée dans le menu déroulant.

Personnaliser le comportement de la pile de retour

Le SDK Android, par défaut, placera l’activité principale de lancement de votre application hôte dans la pile de retour lors du suivi des deep links push. Braze vous permet de définir une activité personnalisée à ouvrir dans la pile de retour à la place de votre activité principale de lancement, ou de désactiver complètement la pile de retour.

Par exemple, pour définir une activité appelée YourMainActivity comme activité de la pile de retour en utilisant la configuration à l’exécution :

BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setPushDeepLinkBackStackActivityEnabled(true)
        .setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
        .build();
Braze.configure(this, brazeConfig);
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().

<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 l’ID d’un canal de notification ou si une notification Braze contient un ID de canal invalide, Braze affichera la notification avec le canal de notification par défaut défini dans le SDK. Les utilisateurs de l’entreprise utilisent les canaux de notification Android au sein de la plateforme pour regrouper les notifications.

Pour définir le nom visible par l’utilisateur du canal de notification Braze par défaut, utilisez BrazeConfig.setDefaultNotificationChannelName().

Pour définir la description visible par l’utilisateur du canal de notification Braze par défaut, utilisez BrazeConfig.setDefaultNotificationChannelDescription().

Mettez à jour toutes les Campaigns API avec le paramètre de l’objet push Android pour inclure le champ notification_channel. Si ce champ n’est pas spécifié, Braze enverra le payload de notification avec l’ID du canal de secours du tableau de bord.

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

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

<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 des notifications et les analyses

Tester l’affichage

À ce stade, vous devriez pouvoir voir les notifications envoyées depuis Braze. Pour tester cela, accédez à la page Campaigns sur votre tableau de bord de Braze et créez une Campaign de notification push. Choisissez Android Push et concevez votre message. Cliquez ensuite sur l’icône en forme d’œil dans le composeur pour accéder à l’outil d’envoi de test. Saisissez l’ID utilisateur ou l’adresse e-mail de votre utilisateur actuel et cliquez sur Send Test. Vous devriez voir la notification push apparaître sur votre appareil.

L'onglet « Test » d'une Campaign de notification push dans le tableau de bord de Braze.

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

Tester les analyses

À ce stade, vous devriez également disposer de l’enregistrement analytique pour les ouvertures de notifications push. Cliquer sur la notification lorsqu’elle arrive devrait entraîner une augmentation de 1 du compteur Direct Opens sur la page de résultats de votre Campaign. Consultez notre article sur les rapports push pour un détail des analyses push.

Pour les problèmes liés aux analyses push, consultez notre guide de résolution des problèmes.

Tester depuis la ligne de commande

Si vous souhaitez tester les notifications intégrées à l’application et les notifications push via l’interface en ligne de commande, vous pouvez envoyer une seule notification via le terminal à l’aide de cURL et de l’API d’envoi de messages. Vous devrez remplacer les champs suivants par les valeurs correctes pour votre cas de test :

  • YOUR_API_KEY (Accédez à Settings > API Keys.)
  • YOUR_EXTERNAL_USER_ID (Recherchez un profil sur la page Search Users.)
  • YOUR_KEY1 (facultatif)
  • YOUR_VALUE1 (facultatif)
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 conversationnelles

Zone de notifications Android affichant une section Conversations avec trois notifications de conversation groupées provenant de différents contacts.

L’initiative People and Conversations est une initiative Android pluriannuelle qui vise à mettre en avant les personnes et les conversations dans les surfaces système du téléphone. Cette priorité repose sur le fait que la communication et l’interaction avec d’autres personnes restent le domaine fonctionnel le plus apprécié et le plus important pour la majorité des utilisateurs Android, toutes catégories démographiques confondues.

Conditions d’utilisation

  • Ce type de notification nécessite le SDK Braze pour Android v15.0.0+ et des appareils sous Android 11+.
  • Les appareils ou SDK non pris en charge afficheront une notification push standard par défaut.

Cette fonctionnalité n’est disponible que via la REST API de Braze. Consultez l’objet push Android pour en savoir plus.

Erreurs de dépassement de quota FCM

Lorsque votre limite pour Firebase Cloud Messaging (FCM) est dépassée, Google renvoie des erreurs « quota exceeded » (quota dépassé). La limite par défaut pour FCM est de 600 000 requêtes par minute. Braze effectue de nouvelles tentatives d’envoi conformément aux bonnes pratiques recommandées par Google. Cependant, un volume important 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 limitation du débit est dépassée, ainsi que les mesures à prendre pour éviter ces erreurs.

Pour vérifier votre limite actuelle, accédez à votre Google Cloud Console > APIs & Services > Firebase Cloud Messaging API > Quotas & System Limits, ou consultez la page des quotas de l’API FCM.

Bonnes pratiques

Nous recommandons ces bonnes pratiques pour maintenir un faible volume de ces erreurs.

Demander une augmentation de la limitation du débit auprès de FCM

Pour demander une augmentation de la limitation du débit auprès de FCM, vous pouvez contacter directement le support Firebase ou procéder comme suit :

  1. Accédez à la page des quotas de l’API FCM.
  2. Localisez le quota Send requests per minute.
  3. Sélectionnez Edit Quota.
  4. Saisissez une nouvelle valeur et soumettez votre demande.

Appliquer une limitation du débit au niveau de l’espace de travail

Vous pouvez appliquer une limitation du débit au niveau de l’espace de travail pour les notifications push Android. Cela peut aider à réguler le rythme de distribution de vos messages sortants. Pour plus de détails, consultez la section Limites de débit de communication de l’espace de travail.

Limitation du débit

Les notifications push sont limitées en débit, alors n’hésitez pas à en envoyer autant que votre application en a besoin. iOS et les serveurs du service de notification push d’Apple (APNs) contrôleront la fréquence de livraison, et vous n’aurez pas de problèmes 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 de maintien de connexion ou reçoit une autre notification.

Configuration des notifications push

Étape 1 : Télécharger votre jeton APNs

Avant de pouvoir envoyer une notification push iOS à l’aide de Braze, vous devez télécharger votre fichier de notification push .p8, comme indiqué dans la documentation destinée aux développeurs d’Apple :

  1. Dans votre compte de développeur Apple, accédez à Certificates, Identifiers & Profiles.
  2. Sous Keys, sélectionnez All et cliquez sur le bouton d’ajout (+) en haut de la page.
  3. Sous Key Description, saisissez un nom unique pour la clé de signature.
  4. Sous Key Services, cochez la case Apple Push Notification service (APNs), puis cliquez sur Continue. Cliquez sur Confirm.
  5. Notez l’ID de la clé. Cliquez sur Download pour générer et télécharger la clé. Veillez à enregistrer le fichier téléchargé dans un endroit sécurisé, car vous ne pouvez le télécharger qu’une seule fois.
  6. Dans Braze, accédez à Paramètres > Paramètres des applications et téléchargez le fichier .p8 sous Apple Push Certificate. Vous pouvez charger votre certificat de notification push de développement ou de production. Pour tester les notifications push une fois que votre application est en direct dans l’App Store, il est recommandé de créer un espace de travail distinct pour la version de développement de votre application.
  7. Lorsque vous y êtes invité, saisissez l’ID de bundle, l’ID de la clé et l’ID de l’équipe de votre application. Vous devrez également préciser si les notifications doivent être envoyées à l’environnement de développement ou de production de votre application, celui-ci étant défini par son profil de provisionnement.
  8. Lorsque vous avez terminé, sélectionnez Enregistrer.

Étape 2 : Activer les capacités push

Dans Xcode, accédez à la section Signing & Capabilities de la cible principale de l’application et ajoutez la capacité de notifications push.

La section « Signing & Capabilities » dans un projet Xcode.

Étape 3 : Configurer la gestion des notifications push

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

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

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

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

Cela indique au SDK de :

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

Étape 3.2 : Remplacer des configurations individuelles (facultatif)

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

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

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

Étape 3.1 : S’enregistrer pour les notifications push avec APNs

Incluez l’exemple de code approprié dans la méthode déléguée application:didFinishLaunchingWithOptions: de votre application afin que les appareils de vos utilisateurs puissent s’enregistrer auprès d’APNs. 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. Consultez les boutons d’action push pour les étapes d’intégration supplémentaires.

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

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))")
}
[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 les jetons push avec Braze

Une fois l’enregistrement APNs terminé, passez le deviceToken résultant à Braze pour activer les notifications push pour l’utilisateur.

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

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

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

[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 l’enregistrement des données analytiques push et la gestion des liens. Assurez-vous d’appeler tout le code d’intégration push dans le thread principal de votre application.

Gestion par défaut des notifications push

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

if let braze = AppDelegate.braze, braze.notifications.handleBackgroundNotification(
  userInfo: userInfo,
  fetchCompletionHandler: completionHandler
) {
  return
}
completionHandler(.noData)

Ensuite, ajoutez le code suivant à la méthode userNotificationCenter(_:didReceive:withCompletionHandler:) de votre application :

if let braze = AppDelegate.braze, braze.notifications.handleUserNotification(
  response: response,
  withCompletionHandler: completionHandler
) {
  return
}
completionHandler()

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

BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleBackgroundNotificationWithUserInfo:userInfo
                                                                                                       fetchCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler(UIBackgroundFetchResultNoData);

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

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 userNotificationCenter(_:didReceive:withCompletionHandler:) sera appelé et Braze enregistrera l’événement de clic push.

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 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: sera appelé et Braze enregistrera l’événement de clic push.

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

Tester les notifications

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

  • YOUR_API_KEY — disponible dans Paramètres > Clés API.
  • YOUR_EXTERNAL_USER_ID — disponible sur la page Rechercher des utilisateurs. Consultez Attribution d’un ID utilisateur pour plus d’informations.
  • 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, consultez notre documentation API pour savoir vers quel endpoint envoyer vos requêtes.

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 des notifications push

Pour accéder aux payloads de notifications push traités par Braze, utilisez la méthode Braze.Notifications.subscribeToUpdates(payloadTypes:_:).

Vous pouvez utiliser le paramètre payloadTypes pour spécifier si vous souhaitez vous abonner aux notifications impliquant des événements d’ouverture de push, des événements de réception de push, ou les deux.

// 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)'")
}
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);
}];

Gestion des notifications au premier plan

Par défaut, lorsqu’une notification push arrive alors que votre application est au premier plan, iOS ne l’affiche pas automatiquement. Pour afficher les notifications push au premier plan et les suivre avec l’analytique de Braze, appelez la méthode handleForegroundNotification(notification:) dans votre implémentation de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).

Comment cela fonctionne

Lorsque vous appelez handleForegroundNotification(notification:), Braze traite le payload de la notification pour enregistrer les données analytiques et gérer les deep links ou les actions des boutons. Le comportement d’affichage réel est contrôlé par les UNNotificationPresentationOptions que vous transmettez au gestionnaire de complétion.

import BrazeKit
import UserNotifications

extension AppDelegate: UNUserNotificationCenterDelegate {
  func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    willPresent notification: UNNotification,
    withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
  ) {
    // Let Braze process the notification payload
    if let braze = AppDelegate.braze {
      braze.notifications.handleForegroundNotification(notification: notification)
    }

    // Control how the notification appears in the foreground
    if #available(iOS 14.0, *) {
      completionHandler([.banner, .list, .sound])
    } else {
      completionHandler([.alert, .sound])
    }
  }
}

Pour un exemple complet, consultez l’exemple d’intégration manuelle des notifications push dans le dépôt du SDK Swift de Braze.

Amorces push

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

Gestion dynamique de la passerelle APNs

La gestion dynamique de la passerelle Apple Push Notification Service (APNs) améliore la fiabilité et l’efficacité des notifications push iOS en détectant automatiquement l’environnement APNs approprié. Auparavant, vous deviez sélectionner manuellement les environnements APNs (développement ou production) pour vos notifications push, ce qui pouvait parfois entraîner des configurations de passerelle incorrectes, des échecs de livraison et des erreurs BadDeviceToken.

Avec la gestion dynamique de la passerelle APNs, vous bénéficiez de :

  • Fiabilité améliorée : les notifications sont toujours envoyées à l’environnement APNs correct, réduisant les échecs de livraison.
  • Configuration simplifiée : vous n’avez plus besoin de gérer manuellement les paramètres de la passerelle APNs.
  • Résilience aux erreurs : les valeurs de passerelle invalides ou manquantes sont gérées de manière transparente, garantissant un service ininterrompu.

Prérequis

Braze prend en charge la gestion dynamique de la passerelle APNs pour les notifications push sur iOS avec la version minimum de SDK suivante :

Comment ça fonctionne

Lorsqu’une application iOS s’intègre au SDK Swift de Braze, elle envoie des données relatives à l’appareil, y compris aps-environment, à l’API du SDK de Braze, si disponible. La valeur apns_gateway indique si l’application utilise l’environnement APNs de développement (dev) ou de production (prod).

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

Lorsque Braze envoie une notification push :

  • Si une valeur de passerelle valide (dev ou prod) est stockée pour l’appareil, Braze l’utilise pour déterminer l’environnement APNs correct.
  • Si aucune valeur de passerelle n’est stockée, Braze utilise par défaut l’environnement APNs configuré dans la page App Settings.

Foire aux questions

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

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

Quel est l’impact sur les performances de livraison des notifications push ?

Cette fonctionnalité améliore les taux de livraison en acheminant systématiquement les jetons push vers l’environnement APNs correct, évitant ainsi les échecs causés par des passerelles mal configurées.

Puis-je désactiver cette fonctionnalité ?

La gestion dynamique de la passerelle APNs est activée par défaut et apporte des améliorations de fiabilité. Si vous avez des cas d’usage spécifiques nécessitant une sélection manuelle de la passerelle, contactez le support Braze.

À propos des notifications push pour Android TV

Illustration d'un appareil Android TV utilisée pour le guide des notifications push Android TV.

Bien qu’il ne s’agisse pas d’une fonctionnalité native, l’intégration des notifications push sur Android TV est rendue possible en exploitant le SDK Android de Braze et Firebase Cloud Messaging pour enregistrer un jeton push pour Android TV. Cependant, vous devez créer une interface utilisateur pour afficher le payload de la notification une fois celui-ci reçu.

Prérequis

Pour utiliser cette fonctionnalité, vous devez effectuer les étapes suivantes :

Configurer les notifications push

Pour configurer les notifications push pour Android TV :

  1. Créez une vue personnalisée dans votre application pour afficher vos notifications.
  2. Créez une fabrique de notifications personnalisée. Cela remplace le comportement par défaut du SDK et vous permet d’afficher manuellement les notifications. En renvoyant null, cela empêche le SDK de traiter la notification et nécessite du code personnalisé pour l’afficher. Une fois ces étapes terminées, vous pouvez commencer à envoyer des notifications push vers Android TV.

  3. (Facultatif) Pour suivre efficacement les analyses de clics, configurez le suivi des analyses de clics. Pour ce faire, créez un rappel push pour écouter les intentions d’ouverture et de réception des notifications push de Braze.

Tester les notifications push Android TV

Pour vérifier que votre déploiement push fonctionne correctement, envoyez une notification depuis le tableau de bord de Braze comme vous le feriez normalement pour un appareil Android.

  • Si l’application est fermée : le message push affiche une notification toast à l’écran.
  • Si l’application est ouverte : vous avez la possibilité d’afficher le message dans votre propre interface hébergée. Suivez le style d’interface des messages in-app du SDK Android Mobile.

Bonnes pratiques

Pour les marketeurs utilisant Braze, le lancement d’une campagne vers Android TV est identique au lancement d’une notification push vers les applications mobiles Android. Pour cibler exclusivement ces appareils, sélectionnez l’application Android TV dans la segmentation.

La réponse de livraison et de clic renvoyée par FCM suit la même convention qu’un appareil Android mobile ; par conséquent, toute erreur est visible dans l’Observabilité de la messagerie.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK Braze Cordova. Une fois le SDK intégré, la fonctionnalité de notification push de base est activée par défaut. Pour utiliser les notifications push riches et les Push Stories, vous devrez les configurer individuellement. Pour utiliser les messages push iOS, vous devez également télécharger un certificat push valide.

Activer les deep links via les notifications push

Par défaut, le SDK Braze pour Cordova ne gère pas automatiquement les deep links provenant des notifications push. Pour activer les deep links via les notifications push, suivez les étapes de configuration décrites dans Création de liens profonds. Pour plus de détails sur ces options de configuration push et d’autres, consultez Configurations optionnelles.

Désactivation des notifications push de base (iOS uniquement)

Après avoir intégré le SDK Braze Cordova pour iOS, la fonctionnalité de base des notifications push est activée par défaut. Pour désactiver cette fonctionnalité dans votre application iOS, ajoutez ce qui suit à votre fichier config.xml. Pour plus d’informations, consultez Configurations optionnelles.

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

Prérequis

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

Configuration des notifications push

Étape 1 : Effectuer la configuration initiale

Étape 1.1 : S’inscrire aux notifications push

Inscrivez-vous aux notifications push à l’aide de l’API Firebase Cloud Messaging (FCM) de Google. Pour un guide complet, consultez les étapes suivantes du guide d’intégration push natif pour Android :

  1. Ajouter Firebase à votre projet.
  2. Ajouter Cloud Messaging à vos dépendances.
  3. Créer un compte de service.
  4. Générer des identifiants JSON.
  5. Charger vos identifiants JSON dans Braze.

Étape 1.2 : Obtenir votre identifiant d’expéditeur Google

Tout d’abord, accédez à la console Firebase, ouvrez votre projet, puis sélectionnez  Settings > Project settings.

Le projet Firebase avec le menu « Settings » ouvert.

Sélectionnez Cloud Messaging, puis sous Firebase Cloud Messaging API (V1), copiez le Sender ID dans votre presse-papiers.

La page « Cloud Messaging » du projet Firebase avec le « Sender ID » mis en évidence.

Étape 1.3 : Mettre à jour votre braze.xml

Ajoutez ce qui suit à votre fichier braze.xml. Remplacez FIREBASE_SENDER_ID par l’identifiant d’expéditeur que vous avez copié précédemment.

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

Étape 1.1 : Charger les certificats APNs

Générez un certificat Apple Push Notification service (APNs) et chargez-le dans le tableau de bord de Braze. Pour un guide complet, consultez Charger votre certificat APNs.

Étape 1.2 : Ajouter la prise en charge des notifications push à votre application

Suivez le guide d’intégration natif iOS.

Étape 2 : Écouter les événements de notifications push (facultatif)

Pour écouter les événements de notifications push détectés et gérés par Braze, appelez subscribeToPushNotificationEvents() et transmettez un argument à exécuter.

// 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();

Champs des événements de notifications push

Pour une liste complète des champs de notifications push, consultez le tableau suivant :

Nom du champ Type Description
payloadType String Spécifie le type de payload de la notification. Les deux valeurs envoyées par le SDK Flutter de Braze sont push_opened et push_received. Seuls les événements push_opened sont pris en charge sur iOS.
url String Spécifie l’URL ouverte par la notification.
useWebview Boolean Si true, l’URL s’ouvre dans l’application dans une vue web modale. Si false, l’URL s’ouvre dans le navigateur de l’appareil.
title String Représente le titre de la notification.
body String Représente le corps ou le contenu textuel de la notification.
summaryText String Représente le texte résumé de la notification. Ceci est mappé depuis subtitle sur iOS.
badgeCount Number Représente le nombre de badges de la notification.
timestamp Number Représente l’heure à laquelle le payload a été reçu par l’application.
isSilent Boolean Si true, le payload est reçu silencieusement. Pour plus de détails sur l’envoi de notifications push silencieuses sur Android, consultez Notifications push silencieuses sur Android. Pour plus de détails sur l’envoi de notifications push silencieuses sur iOS, consultez Notifications push silencieuses sur iOS.
isBrazeInternal Boolean Vaut true si le payload d’une notification a été envoyé pour une fonctionnalité interne du SDK, comme la synchronisation des Feature Flags ou le suivi des désinstallations. Le payload est reçu silencieusement pour l’utilisateur.
imageUrl String Spécifie l’URL associée à l’image de la notification.
brazeProperties Object Représente les propriétés Braze associées à la campagne (paires clé-valeur).
ios Object Représente les champs spécifiques à iOS.
android Object Représente les champs spécifiques à Android.

Étape 3 : Tester l’affichage des notifications push

Pour tester votre intégration après avoir configuré les notifications push dans la couche native :

  1. Définissez un utilisateur actif dans l’application Flutter. Pour ce faire, initialisez votre plugin en appelant braze.changeUser('your-user-id').
  2. Accédez à Campaigns et créez une nouvelle campagne de notifications push. Choisissez les plateformes que vous souhaitez tester.
  3. Composez votre notification de test et rendez-vous dans l’onglet Test. Ajoutez le même user-id que l’utilisateur test et cliquez sur Send Test.
  4. Vous devriez recevoir la notification sur votre appareil sous peu. Il se peut que vous deviez vérifier le centre de notifications ou mettre à jour les paramètres si elle ne s’affiche pas.

Pour permettre à Braze d’ouvrir automatiquement votre application et tout deep link lorsqu’une notification push est appuyée, définissez com_braze_handle_push_deep_links_automatically sur true dans votre braze.xml :

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

Ce paramètre peut également être défini via la configuration au moment de l’exécution dans votre code Android natif :

val brazeConfig = BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build()
Braze.configure(this, brazeConfig)

Si vous souhaitez gérer les deep links de manière personnalisée, utilisez l’écouteur subscribeToPushNotificationEvents() décrit à l’étape 2 pour router vous-même le champ url de l’événement push_opened. Pour plus d’informations, consultez Création de liens profonds.

Conditions préalables

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

Configuration des notifications push

Les téléphones récents fabriqués par Huawei sont équipés de Huawei Mobile Services (HMS), un service utilisé pour envoyer des notifications push à la place de Firebase Cloud Messaging (FCM) de Google.

Étape 1 : Créer un compte développeur Huawei

Avant de commencer, vous devrez vous inscrire et configurer un compte développeur Huawei. Dans votre compte Huawei, accédez à My Projects > Project Settings > App Information et notez l’App ID et l’App secret.

Page d'informations de l'application dans la console développeur Huawei affichant l'App ID et l'App secret.

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

Dans le tableau de bord de Braze, accédez à App Settings, situé dans la navigation Settings.

Cliquez sur + Add App, indiquez un nom (par exemple Mon application Huawei) et sélectionnez Android comme plateforme.

Boîte de dialogue d'ajout d'application Braze créant une application Android Huawei.

Une fois votre nouvelle application Braze créée, localisez les paramètres des notifications push et sélectionnez Huawei comme fournisseur de notifications push. Renseignez ensuite votre Huawei Client Secret et votre Huawei App ID.

Paramètres du fournisseur de notifications push Huawei dans Braze avec les champs Huawei App ID et Client Secret.

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

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

Après avoir terminé le codelab, vous devrez créer un service de messagerie Huawei personnalisé pour obtenir les jetons push et transmettre les messages au SDK Braze.

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
    }
  }
}
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 push personnalisé, ajoutez les lignes suivantes à votre AndroidManifest.xml :

<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 : Gérer les notifications au premier plan

Par défaut, lorsqu’une notification push arrive alors que votre application est au premier plan, Huawei l’affiche automatiquement. Pour que Braze traite le payload de la notification push (suivi analytique, gestion des deep links et traitement personnalisé), transmettez les données push entrantes à Braze dans votre méthode HmsMessageService.onMessageReceived.

Lorsque vous appelez BrazeHuaweiPushHandler.handleHmsRemoteMessageData, Braze détermine si le payload est une notification push Braze et, le cas échéant, crée et affiche la notification. Pour en savoir plus, consultez la section Gérer les notifications au premier plan dans la documentation des notifications push Android.

Pour un exemple complet, consultez la référence du gestionnaire Huawei dans la documentation du SDK Android de Braze.

Étape 5 : Tester 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 développeur Huawei et avez intégré les SDK Braze et Huawei dans votre application.

Nous pouvons maintenant tester l’intégration en envoyant une nouvelle Campaign de notification push dans Braze.

Étape 5.1 : Créer une nouvelle Campaign de notification push

Sur la page Campaigns, créez une nouvelle Campaign et choisissez Push Notification comme type de message.

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

Le compositeur de création de Campaign affichant les plateformes push disponibles.

Composez ensuite votre notification push avec un titre et un message.

Étape 5.2 : Envoyer une notification push de test

Dans l’onglet Test, entrez votre identifiant utilisateur, que vous avez défini dans votre application à l’aide de la méthode changeUser(USER_ID_STRING), puis cliquez sur Send Test pour envoyer une notification push de test.

L'onglet Test dans le compositeur de création de Campaign vous permet d'envoyer un message de test en indiquant votre identifiant utilisateur et en le saisissant dans le champ « Add Individual Users ».

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

Étape 5.3 : Configurer la segmentation Huawei (facultatif)

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

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

Filtre d'application de Segment dans Braze sélectionnant l'application Huawei pour le ciblage push.

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

Conditions préalables

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

Configuration des notifications push

Étape 1 : Terminer la configuration initiale

Conditions préalables

Avant de pouvoir utiliser Expo pour les notifications push, il est nécessaire de configurer le plugin Braze Expo.

Étape 1.1 : Mettre à 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  Settings > Project settings.

Le projet Firebase avec le menu « Settings » ouvert.

Sélectionnez Cloud Messaging, puis sous Firebase Cloud Messaging API (V1), copiez le Sender ID dans votre presse-papiers.

La page « Cloud Messaging » du projet Firebase avec le « Sender ID » mis en évidence.

Ensuite, ouvrez le fichier app.json de votre projet et attribuez à la propriété firebaseCloudMessagingSenderId le Sender ID figurant dans votre presse-papiers. Par exemple :

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

{
  "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 préférez configurer ces paramètres de manière native, inscrivez-vous pour les notifications push en vous référant au guide d’intégration native des notifications push Android.

Si vous n’utilisez pas le plugin Braze Expo ou si vous préférez configurer ces paramètres de manière native, inscrivez-vous pour les notifications push en suivant les étapes suivantes du guide d’intégration native des notifications push iOS :

Étape 1.1 : Demander les autorisations de notification push

Si vous ne prévoyez pas de demander les autorisations 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 iOS.

Étape 1.2 (facultative) : Migrer votre clé de notification 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 importée dans le tableau de bord de Braze.

Étape 2 : Demander l’autorisation de notification push

Utilisez la méthode Braze.requestPushPermission() (disponible à partir de la version 1.38.0) pour demander l’autorisation des notifications push à l’utilisateur sur iOS et Android 13+. Pour Android 12 et versions antérieures, cette méthode est sans effet.

Cette méthode prend un paramètre requis qui spécifie les autorisations que le SDK doit demander à l’utilisateur sur iOS. Ces options n’ont aucun effet sur Android.

const permissionOptions = {
  alert: true,
  sound: true,
  badge: true,
  provisional: false
};

Braze.requestPushPermission(permissionOptions);

Étape 2.1 : Écouter les notifications push (facultatif)

Vous pouvez également vous abonner aux événements lorsque Braze a détecté et traité une notification push entrante. Utilisez la clé d’écoute Braze.Events.PUSH_NOTIFICATION_EVENT.

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 notification push

Pour obtenir la liste complète des champs de notification push, consultez le tableau ci-dessous :

Nom du champ Type Description
payload_type Chaîne de caractères Spécifie le type de payload de la notification. Les deux valeurs envoyées par le SDK React Native de Braze sont push_opened et push_received.
url Chaîne de caractères Spécifie l’URL ouverte par la notification.
use_webview Valeur booléenne Si la valeur est true, l’URL s’ouvrira in-app via une WebView modale. Si la valeur est false, l’URL s’ouvrira dans le navigateur de l’appareil.
title Chaîne de caractères Représente le titre de la notification.
body Chaîne de caractères Représente le corps ou le contenu textuel de la notification.
summary_text Chaîne de caractères Représente le texte résumé de la notification. Correspond à subtitle sur iOS.
badge_count Nombre Représente le nombre de badges de la notification.
timestamp Nombre Représente l’heure à laquelle le payload a été reçu par l’application.
is_silent Valeur booléenne Si la valeur est true, le payload est reçu silencieusement. Pour plus de détails sur l’envoi de notifications push silencieuses sur Android, consultez Notifications push silencieuses sur Android. Pour plus de détails sur l’envoi de notifications push silencieuses sur iOS, consultez Notifications push silencieuses sur iOS.
is_braze_internal Valeur booléenne La valeur sera true si un payload de notification a été envoyé pour une fonctionnalité interne du SDK, comme la synchronisation des Feature Flags ou le suivi des désinstallations. Le payload est reçu silencieusement par l’utilisateur.
image_url Chaîne de caractères Spécifie l’URL associée à l’image de la notification.
braze_properties Objet Représente les propriétés Braze associées à la Campaign (paires clé-valeur).
ios Objet Représente les champs spécifiques à iOS.
android Objet Représente les champs spécifiques à Android.

Étape 3 : Activer la création de liens profonds (facultatif)

Pour permettre à Braze de gérer les deep links dans les composants React lorsqu’une notification push est cliquée, commencez par mettre en œuvre les étapes décrites dans la bibliothèque React Native Linking ou avec la solution de votre choix. Suivez ensuite les étapes supplémentaires ci-dessous.

Pour en savoir plus sur les deep links, consultez notre article de FAQ.

Si vous utilisez le plugin Braze Expo, vous pouvez gérer automatiquement les deep links des notifications push en définissant androidHandlePushDeepLinksAutomatically sur true dans votre app.json.

Pour gérer manuellement les deep links, consultez la documentation native Android : Ajout de deep links.

Étape 3.1 : Enregistrer le payload de la notification push au lancement de l’application

Ajoutez populateInitialPushPayloadFromIntent à la méthode onCreate() de votre activité principale. Cet appel doit être effectué avant l’initialisation de React Native afin de capturer les données Intent initiales. Par exemple :

override fun onCreate(savedInstanceState: Bundle?) {
  BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
  super.onCreate(savedInstanceState)
}

En plus des scénarios de base gérés par React Native Linking, implémentez la méthode Braze.getInitialPushPayload et récupérez la valeur url pour prendre en compte les deep links provenant de notifications push qui ouvrent votre application lorsqu’elle n’est pas en cours d’exécution. Par exemple :

// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
  if (pushPayload) {
    console.log('Braze.getInitialPushPayload is ' + pushPayload);
    showToast('Initial URL is ' + pushPayload.url);
    handleOpenUrl({ pushPayload.url });
  }
});

Cela inclut l’enregistrement d’un schéma d’URL personnalisé et l’implémentation d’un gestionnaire d’URL dans votre AppDelegate. Pour les instructions complètes de configuration, consultez Gestion des deep links dans la documentation native iOS.

Étape 3.1 : Enregistrer le payload de la notification push au lancement de l’application

Pour iOS, ajoutez populateInitialPayloadFromLaunchOptions à la méthode didFinishLaunchingWithOptions de votre AppDelegate. Par exemple :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // ... Perform regular React Native setup

  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];
}
func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
  // ... Perform regular React Native setup

  let configuration = Braze.Configuration(apiKey: apiKey, endpoint: endpoint)
  configuration.triggerMinimumTimeInterval = 1
  configuration.logger.level = .info
  let braze = BrazeReactBridge.initBraze(configuration)
  AppDelegate.braze = braze
  registerForPushNotifications()
  BrazeReactUtils.shared().populateInitialPayload(fromLaunchOptions: launchOptions)

  return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

En plus des scénarios de base gérés par React Native Linking, implémentez la méthode Braze.getInitialPushPayload et récupérez la valeur url pour prendre en compte les deep links provenant de notifications push qui ouvrent votre application lorsqu’elle n’est pas en cours d’exécution. Par exemple :

// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
  if (pushPayload) {
    console.log('Braze.getInitialPushPayload is ' + pushPayload);
    showToast('Initial URL is ' + pushPayload.url);
    handleOpenUrl({ pushPayload.url });
  }
});

Pour activer la prise en charge des liens universels, implémentez un délégué Braze qui détermine s’il convient d’ouvrir une URL donnée, puis enregistrez-le auprès de votre instance Braze.

Créez un fichier BrazeReactDelegate.swift dans votre répertoire iOS et ajoutez le contenu suivant. Remplacez YOUR_DOMAIN_HOST par votre domaine réel.

import Foundation
import BrazeKit
import UIKit

class BrazeReactDelegate: NSObject, BrazeDelegate {

  /// This delegate method determines whether to open a given URL.
  /// Reference the context to get additional details about the URL payload.
  func braze(_ braze: Braze, shouldOpenURL context: Braze.URLContext) -> Bool {
    if let host = context.url.host,
       host.caseInsensitiveCompare("YOUR_DOMAIN_HOST") == .orderedSame {
      // Sample custom handling of universal links
      let application = UIApplication.shared
      let userActivity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
      userActivity.webpageURL = context.url
      // Routes to the `continueUserActivity` method, which should be handled in your AppDelegate.
      application.delegate?.application?(
        application,
        continue: userActivity,
        restorationHandler: { _ in }
      )
      return false
    }
    // Let Braze handle links otherwise
    return true
  }
}

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

import BrazeKit

class AppDelegate: UIResponder, UIApplicationDelegate {

  static var braze: Braze?

  // Keep a strong reference to the BrazeDelegate so it is not deallocated.
  private var brazeDelegate: BrazeReactDelegate?

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    // Other setup code (e.g., Braze initialization)

    brazeDelegate = BrazeReactDelegate()
    AppDelegate.braze?.delegate = brazeDelegate
    return true
  }
}

Créez un fichier BrazeReactDelegate.h dans votre répertoire iOS, puis ajoutez l’extrait de code suivant.

#import <Foundation/Foundation.h>
#import <BrazeKit/BrazeKit-Swift.h>

@interface BrazeReactDelegate: NSObject<BrazeDelegate>

@end

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

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

#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, consultez notre application modèle dans cet exemple d’AppDelegate.

Étape 4 : Gérer les notifications au premier plan

La gestion des notifications au premier plan fonctionne différemment selon votre plateforme et votre configuration. Choisissez l’approche qui correspond à votre intégration :

Pour iOS, la gestion des notifications au premier plan est identique à celle de l’intégration native Swift. Appelez handleForegroundNotification(notification:) dans votre implémentation de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).

Pour des informations détaillées et des exemples de code, consultez Gestion des notifications au premier plan dans la documentation des notifications push Swift.

Pour Android, la gestion des notifications au premier plan est identique à celle de l’intégration native Android. Appelez BrazeFirebaseMessagingService.handleBrazeRemoteMessage dans votre méthode FirebaseMessagingService.onMessageReceived.

Pour des informations détaillées et des exemples de code, consultez Gestion des notifications au premier plan dans la documentation des notifications push Android.

Dans le flux de travail géré par Expo, il n’est pas nécessaire d’appeler directement les gestionnaires de notifications natifs. Utilisez l’API Expo Notifications pour contrôler la présentation au premier plan, tandis que le plugin Braze Expo gère automatiquement le traitement natif.

import * as Notifications from 'expo-notifications';
import Braze from '@braze/react-native-sdk';

// Control foreground presentation in Expo
Notifications.setNotificationHandler({
  handleNotification: async () => ({
    shouldShowAlert: true,    // Show alert while in foreground
    shouldPlaySound: false,
    shouldSetBadge: false,
  }),
});

// React to Braze push events
const subscription = Braze.addListener('pushNotificationEvent', (event) => {
  console.log('Braze push event', {
    type: event.payload_type,   // "push_received" | "push_opened"
    title: event.title,
    url: event.url,
    is_silent: event.is_silent,
  });
  // Handle deep links, custom behavior, etc.
});

// Handle initial payload when app launches via push
Braze.getInitialPushPayload((payload) => {
  if (payload) {
    console.log('Initial push payload', payload);
  }
});

Pour les intégrations en flux de travail bare, suivez plutôt les approches natives iOS et Android.

Étape 5 : Envoyer une notification push de test

À ce stade, vous devriez pouvoir envoyer des notifications aux appareils. Suivez les étapes ci-dessous 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. Accédez à Campaigns et créez une nouvelle Campaign de notification push. Choisissez les plateformes que vous souhaitez tester.
  3. Rédigez votre notification de test et accédez à l’onglet Test. Ajoutez le même user-id que l’utilisateur test et cliquez sur Send Test. Vous devriez recevoir la notification sur votre appareil sous peu.

Une Campaign de notification push Braze montrant que vous pouvez ajouter votre propre ID utilisateur en tant que destinataire de 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 suivants des notifications push — sans avoir besoin d’écrire du code dans les couches natives Android ou iOS.

Transférer les notifications push Android vers un FMS supplémentaire

Si vous souhaitez utiliser un Firebase Messaging Service (FMS) supplémentaire, vous pouvez spécifier un FMS de secours à appeler lorsque votre application reçoit une notification push qui ne provient pas de Braze. Par exemple :

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          ...
          "androidFirebaseMessagingFallbackServiceEnabled": true,
          "androidFirebaseMessagingFallbackServiceClasspath": "com.company.OurFirebaseMessagingService"
        }
      ]
    ]
  }
}

Utiliser les extensions d’application 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. Il existe plusieurs façons d’aborder cette étape, selon la manière 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’application d’Expo. Vous pouvez également configurer 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 courantes de résolution des problèmes pour les intégrations de notifications push avec le SDK Braze React Native et le plugin Expo.

Les notifications push ont cessé de fonctionner

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

  1. Vérifiez que le SDK Braze continue de suivre les 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 de ses 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 déléguées de notification push existantes.

Le jeton d’appareil ne s’enregistre pas auprès de Braze

Si votre jeton d’appareil ne s’enregistre pas auprès de Braze, commencez par consulter Les notifications push ont cessé de fonctionner.

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

Si les deep links depuis les notifications push cessent de s’ouvrir après une migration, vérifiez les points suivants :

  1. Vérifiez que votre configuration React Native Linking est toujours valide dans votre application mise à jour.
  2. Pour les intégrations natives iOS, confirmez que vous avez implémenté populateInitialPayloadFromLaunchOptions et Braze.getInitialPushPayload afin que, lorsque l’application est lancée depuis un état terminé, elle puisse récupérer le payload push initial et transmettre son url à votre gestionnaire de deep links.
  3. Si vous utilisez le plugin Braze Expo, vérifiez que androidHandlePushDeepLinksAutomatically est correctement configuré pour votre déploiement.
  4. Examinez les dépendances récemment ajoutées pour détecter d’éventuelles surcharges dans la gestion des notifications ou le comportement du délégué d’application.

Si vous avez effectué ces vérifications et que le problème persiste, ouvrez un ticket d’assistance et incluez les journaux du SDK ainsi que les étapes de reproduction.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK Web de Braze. Il sera également nécessaire de configurer les notifications push pour le SDK Web. Veuillez noter que vous ne pouvez envoyer des notifications push qu’aux utilisateurs iOS et iPadOS qui utilisent Safari v16.4 ou une version ultérieure.

Configuration des notifications push Safari pour mobile

Étape 1 : Créer un fichier 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 utilisés par le sélecteur d’applications, choisir un affichage plein écran pour ressembler à une application native, ou encore définir 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.

{
  "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 dans la documentation MDN sur les manifestes d’applications web.

Ajoutez la balise <link> suivante dans l’élément <head> de votre site web, en pointant vers l’emplacement où votre fichier manifeste est hébergé.

<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 service 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 récentes. Pour demander l’autorisation des notifications push sur iOS ou iPadOS, votre site web doit être ajouté à l’écran d’accueil de l’utilisateur en sélectionnant Partager > Ajouter à l’écran d’accueil. La fonctionnalité Ajouter à l’écran d’accueil permet aux utilisateurs de mettre votre site web en favori, en ajoutant votre icône à leur écran d’accueil.

Un iPhone affichant les options pour mettre un site web en favori et 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 demander l’autorisation des notifications push lorsque l’utilisateur effectue une action (comme cliquer sur un bouton). Cela peut être fait à l’aide de la méthode requestPushPermission, ou avec un message in-app d’amorce push sans code.

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

Par exemple :

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 test pour valider l’intégration. Une fois votre intégration terminée, vous pouvez utiliser nos messages d’amorce 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 Unity Braze.

Configuration des notifications push

Étape 1 : Configurer la plateforme

Étape 1.1 : Activer Firebase

Pour commencer, suivez la documentation de configuration Firebase Unity.

Étape 1.2 : Définir vos identifiants Firebase

Vous devez saisir votre clé de serveur Firebase et votre ID d’expéditeur dans le tableau de bord de Braze. Pour ce faire, connectez-vous à la console développeur Firebase et sélectionnez votre projet Firebase. Ensuite, sélectionnez Cloud Messaging sous Settings, puis copiez la clé de serveur et l’ID d’expéditeur :
Paramètres Cloud Messaging de la console Firebase montrant la clé de serveur et l'ID d'expéditeur.

Dans Braze, sélectionnez votre application Android sur la page App Settings sous Manage Settings. Ensuite, saisissez votre clé de serveur Firebase dans le champ Firebase Cloud Messaging Server Key et l’ID d’expéditeur Firebase dans le champ Firebase Cloud Messaging Sender ID.

Page de paramètres de l'application Android de Braze avec les champs de clé de serveur et d'ID d'expéditeur Firebase Cloud Messaging.

Étape 1.1 : Vérifier la méthode d’intégration

Braze fournit une solution Unity native pour automatiser les intégrations push iOS. Si vous préférez configurer et gérer votre intégration manuellement, consultez Swift : Notifications push.

Sinon, passez à l’étape suivante.

Étape 1.1 : Activer ADM

  1. Créez un compte sur le portail développeur Amazon Apps & Games si ce n’est pas déjà fait.
  2. Obtenez les identifiants OAuth (Client ID et Client Secret) ainsi qu’une clé API ADM.
  3. Activez Automatic ADM Registration Enabled dans la fenêtre de configuration Unity de Braze.
    • Vous pouvez également ajouter la ligne suivante à votre fichier res/values/braze.xml pour activer l’enregistrement ADM :
  <bool name="com_braze_push_adm_messaging_registration_enabled">true</bool>

Étape 2 : Configurer les notifications push

Étape 2.1 : Configurer les paramètres push

Le SDK Braze peut gérer automatiquement l’enregistrement push auprès des serveurs Firebase Cloud Messaging pour que les appareils reçoivent des notifications push. Dans Unity, activez Automate Unity Android Integration, puis configurez les paramètres de Push Notification suivants.

Paramètre Description
Automatic Firebase Cloud Messaging Registration Enabled Indique au SDK Braze de récupérer et d’envoyer automatiquement un jeton push FCM pour un appareil.
Firebase Cloud Messaging Sender ID L’ID d’expéditeur issu de votre console Firebase.
Handle Push Deeplinks Automatically Détermine si le SDK doit gérer l’ouverture des deep links ou le lancement de l’application lorsqu’une notification push est cliquée.
Small Notification Icon Drawable Référence de ressource drawable Android pour la petite icône affichée à la réception d’une notification push. Saisissez la référence complète incluant le préfixe @drawable/ (par exemple, @drawable/hourglass_icon). L’intégration automatique inscrit cette valeur dans braze.xml telle quelle. Si vous laissez ce champ vide, la notification utilise l’icône de l’application comme petite icône.
Large Notification Icon Drawable Grande icône facultative pour les notifications. Utilisez le même format @drawable/ que pour la petite icône (par exemple, @drawable/my_large_icon).

Étape 2.1 : Charger votre jeton APNs

Avant de pouvoir envoyer une notification push iOS à l’aide de Braze, vous devez télécharger votre fichier de notification push .p8, comme indiqué dans la documentation destinée aux développeurs d’Apple :

  1. Dans votre compte de développeur Apple, accédez à Certificates, Identifiers & Profiles.
  2. Sous Keys, sélectionnez All et cliquez sur le bouton d’ajout (+) en haut de la page.
  3. Sous Key Description, saisissez un nom unique pour la clé de signature.
  4. Sous Key Services, cochez la case Apple Push Notification service (APNs), puis cliquez sur Continue. Cliquez sur Confirm.
  5. Notez l’ID de la clé. Cliquez sur Download pour générer et télécharger la clé. Veillez à enregistrer le fichier téléchargé dans un endroit sécurisé, car vous ne pouvez le télécharger qu’une seule fois.
  6. Dans Braze, accédez à Paramètres > Paramètres des applications et téléchargez le fichier .p8 sous Apple Push Certificate. Vous pouvez charger votre certificat de notification push de développement ou de production. Pour tester les notifications push une fois que votre application est en direct dans l’App Store, il est recommandé de créer un espace de travail distinct pour la version de développement de votre application.
  7. Lorsque vous y êtes invité, saisissez l’ID de bundle, l’ID de la clé et l’ID de l’équipe de votre application. Vous devrez également préciser si les notifications doivent être envoyées à l’environnement de développement ou de production de votre application, celui-ci étant défini par son profil de provisionnement.
  8. Lorsque vous avez terminé, sélectionnez Enregistrer.

Étape 2.2 : Activer le push automatique

Ouvrez les paramètres de configuration Braze dans l’éditeur Unity en naviguant vers Braze > Braze Configuration.

Cochez Integrate Push With Braze pour enregistrer automatiquement les utilisateurs aux notifications push, transmettre les jetons push à Braze, suivre les données analytiques d’ouverture push et bénéficier de notre gestion par défaut des notifications push.

Étape 2.3 : Activer le push en arrière-plan (facultatif)

Cochez Enable Background Push si vous souhaitez activer le background mode pour les notifications push. Cela permet au système de réveiller votre application depuis l’état suspended lorsqu’une notification push arrive, permettant à votre application de télécharger du contenu en réponse aux notifications push. Cocher cette option est nécessaire pour notre fonctionnalité de suivi de désinstallation.

L'éditeur Unity affiche les options de configuration Braze. Dans cet éditeur, les options « Automate Unity iOS integration », « Integrate push with braze » et « Enable background push » sont activées.

Étape 2.4 : Désactiver l’enregistrement automatique (facultatif)

Les utilisateurs qui n’ont pas encore donné leur consentement aux notifications push seront automatiquement autorisés pour le push à l’ouverture de votre application. Pour désactiver cette fonctionnalité et enregistrer manuellement les utilisateurs pour le push, cochez Disable Automatic Push Registration.

  • Si Disable Provisional Authorization n’est pas coché sur iOS 12 ou version ultérieure, l’utilisateur sera provisoirement (silencieusement) autorisé à recevoir des notifications push discrètes. Si l’option est cochée, l’utilisateur verra la demande de permission push native.
  • Si vous devez configurer le moment exact où la demande est affichée à l’exécution, désactivez l’enregistrement automatique depuis l’éditeur de configuration Braze et utilisez AppboyBinding.PromptUserForPushPermissions() à la place.

L'éditeur Unity affiche les options de configuration Braze. Dans cet éditeur, les options « Automate Unity iOS integration », « integrate push with braze » et « disable automatic push registration » sont activées.

Étape 2.1 : Mettre à jour AndroidManifest.xml

Si votre application ne dispose pas d’un AndroidManifest.xml, vous pouvez utiliser le modèle suivant. Sinon, si vous avez déjà un AndroidManifest.xml, assurez-vous que les sections manquantes suivantes sont ajoutées à votre AndroidManifest.xml existant.

<?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>

Étape 2.2 : Enregistrer votre clé API ADM

Tout d’abord, générez une clé API ADM pour votre application, puis enregistrez la clé dans un fichier nommé api_key.txt et ajoutez-le dans le répertoire Assets/ de votre projet.

Ensuite, dans votre fichier mainTemplate.gradle, ajoutez le code suivant :

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)

Étape 2.3 : Ajouter le Jar ADM

Le fichier Jar ADM requis peut être placé n’importe où dans votre projet conformément à la documentation Unity JAR.

Étape 2.4 : Ajouter le Client Secret et le Client ID à votre tableau de bord de Braze

Enfin, vous devez ajouter le Client Secret et le Client ID obtenus à l’étape 1 sur la page Manage Settings du tableau de bord de Braze.

Page de paramètres de l'application Fire OS de Braze avec les champs ADM client ID et client secret.

Étape 3 : Configurer les écouteurs push

Étape 3.1 : Activer l’écouteur de réception push

L’écouteur de réception push est déclenché lorsqu’un utilisateur reçoit une notification push. Pour envoyer le payload push à Unity, définissez le nom de votre objet de jeu et la méthode de rappel de l’écouteur de réception push sous Set Push Received Listener.

Étape 3.2 : Activer l’écouteur d’ouverture push

L’écouteur d’ouverture push est déclenché lorsqu’un utilisateur lance l’application en cliquant sur une notification push. Pour envoyer le payload push à Unity, définissez le nom de votre objet de jeu et la méthode de rappel de l’écouteur d’ouverture push sous Set Push Opened Listener.

Étape 3.3 : Activer l’écouteur de suppression push

L’écouteur de suppression push est déclenché lorsqu’un utilisateur balaie ou ignore une notification push. Pour envoyer le payload push à Unity, définissez le nom de votre objet de jeu et la méthode de rappel de l’écouteur de suppression push sous Set Push Deleted Listener.

Exemple d’écouteur push

L’exemple suivant implémente l’objet de jeu BrazeCallback en utilisant respectivement les méthodes de rappel PushNotificationReceivedCallback, PushNotificationOpenedCallback et PushNotificationDeletedCallback.

Ce graphique d'exemple d'implémentation montre les options de configuration Braze mentionnées dans les sections précédentes ainsi qu'un extrait de code C#.

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

Étape 3.1 : Activer l’écouteur de réception push

L’écouteur de réception push est déclenché lorsqu’un utilisateur reçoit une notification push alors qu’il utilise activement l’application (par exemple lorsque l’application est au premier plan). Configurez l’écouteur de réception push dans l’éditeur de configuration Braze. Si vous devez configurer votre écouteur d’objet de jeu à l’exécution, utilisez AppboyBinding.ConfigureListener() en spécifiant BrazeUnityMessageType.PUSH_RECEIVED.

L'éditeur Unity affiche les options de configuration Braze. Dans cet éditeur, l'option « Set Push Received Listener » est développée, et le « Game Object Name » (AppBoyCallback) ainsi que le « Callback Method Name » (PushNotificationReceivedCallback) sont renseignés.

Étape 3.2 : Activer l’écouteur d’ouverture push

L’écouteur d’ouverture push est déclenché lorsqu’un utilisateur lance l’application en cliquant sur une notification push. Pour envoyer le payload push à Unity, définissez le nom de votre objet de jeu et la méthode de rappel de l’écouteur d’ouverture push sous l’option Set Push Opened Listener :

L'éditeur Unity affiche les options de configuration Braze. Dans cet éditeur, l'option « Set Push Received Listener » est développée, et le « Game Object Name » (AppBoyCallback) ainsi que le « Callback Method Name » (PushNotificationOpenedCallback) sont renseignés.

Si vous devez configurer votre écouteur d’objet de jeu à l’exécution, utilisez AppboyBinding.ConfigureListener() en spécifiant BrazeUnityMessageType.PUSH_OPENED.

Exemple d’écouteur push

L’exemple suivant implémente l’objet de jeu AppboyCallback en utilisant respectivement les méthodes de rappel PushNotificationReceivedCallback et PushNotificationOpenedCallback.

Ce graphique d'exemple d'implémentation montre les options de configuration Braze mentionnées dans les sections précédentes ainsi qu'un extrait de code C#.

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

En mettant à jour votre AndroidManifest.xml à l’étape précédente, les écouteurs push ont été automatiquement configurés lorsque vous avez ajouté les lignes suivantes. Aucune configuration supplémentaire n’est donc nécessaire.

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

Configurations optionnelles

Deep linking vers les ressources intégrées à l’application

Bien que Braze puisse gérer les deep links standard (tels que les URL de sites web, les URI Android, etc.) par défaut, la création de deep links personnalisés nécessite une configuration supplémentaire du Manifest.

Pour obtenir des instructions de configuration, consultez Deep Linking to In-App Resources.

Ajouter des icônes de notification push Braze

Pour ajouter des icônes push à votre projet, créez un plug-in AAR ou une bibliothèque Android contenant les fichiers d’images d’icônes sous res/drawable* (ou des dossiers spécifiques à la densité), puis référencez chaque icône dans Braze > Braze Configuration en utilisant le nom complet de la ressource @drawable/ (voir Étape 2.1 : Configurer les paramètres push). Pour les étapes d’empaquetage et d’importation Unity, consultez Android Library Projects and Android Archive plug-ins.

Pour les règles de conception des petites icônes (alpha uniquement, sans couleur), consultez Notifications push Android, Étape 2 : Conformer les petites icônes aux directives de conception.

Rappel de jeton push

Pour recevoir une copie des jetons d’appareil Braze depuis le système d’exploitation, définissez un délégué à l’aide de AppboyBinding.SetPushTokenReceivedFromSystemDelegate().

Il n’y a pas de configurations optionnelles pour ADM pour le moment.

Conditions préalables

Avant de pouvoir utiliser cette fonctionnalité, vous devez intégrer le SDK Braze .NET MAUI.

Configuration des notifications push

Pour intégrer les notifications push avec .NET MAUI (anciennement Xamarin), vous devrez suivre les étapes d’intégration des notifications push natives Android. Les étapes suivantes ne sont qu’un résumé. Pour une procédure complète, consultez le guide des notifications push natives.

Étape 1 : Mettre à jour votre projet

  1. Ajoutez Firebase à votre projet Android.
  2. Ajoutez la bibliothèque Cloud Messaging au fichier build.gradle de votre projet Android :
      implementation "google.firebase:firebase-messaging:+"
    

Étape 2 : Créer vos identifiants JSON

  1. Dans Google Cloud, activez l’API Firebase Cloud Messaging.
  2. Sélectionnez Service Accounts > votre projet > Create Service Account, puis saisissez un nom, un ID et une description pour le compte de service. Lorsque vous avez terminé, sélectionnez Create and continue.
  3. Dans le champ Role, recherchez et sélectionnez Firebase Cloud Messaging API Admin dans la liste des rôles.
  4. Dans Service Accounts, choisissez votre projet, puis sélectionnez  Actions > Manage Keys > Add Key > Create new key. Choisissez JSON, puis sélectionnez Create.

Étape 3 : Téléverser vos identifiants JSON

  1. Dans Braze, sélectionnez  Paramètres > Paramètres de l’application. Sous les Paramètres des notifications push de votre application Android, choisissez Firebase, puis sélectionnez Upload JSON File et téléversez les identifiants que vous avez générés précédemment. Lorsque vous avez terminé, sélectionnez Save.
  2. Activez l’enregistrement automatique des jetons FCM en accédant à la console Firebase. Ouvrez votre projet, puis sélectionnez  Settings > Project settings. Sélectionnez Cloud Messaging, puis sous Firebase Cloud Messaging API (V1), copiez le numéro dans le champ Sender ID.
  3. Dans votre projet Android Studio, ajoutez ce qui suit à votre fichier braze.xml.
  <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>

Étape 1 : Effectuer la configuration initiale

Consultez les instructions d’intégration Swift pour obtenir des informations sur la configuration de votre application avec les notifications push et le stockage de vos identifiants sur notre serveur. Référez-vous à l’application exemple iOS MAUI pour plus de détails.

Étape 2 : Demander l’autorisation des notifications push

Notre SDK .NET MAUI prend désormais en charge la configuration automatique des notifications push. Configurez l’automatisation et les autorisations des notifications push en ajoutant le code suivant à la configuration de votre instance Braze :

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

Référez-vous à l’application exemple iOS MAUI pour plus de détails. Pour en savoir plus, consultez la documentation Xamarin relative aux notifications utilisateur améliorées dans Xamarin.iOS.

New Stuff!