Docs

Notifications push

Distribuez les réponses des agents et les campagnes pendant que l’application est fermée, avec un lien profond menant directement vers la bonne conversation. Votre application possède le sous-système de push ; le SDK enregistre les tokens et ouvre les conversations.

Ce que Respondo envoie#

  • Push de messages — une réponse d’un agent ou de l’IA dans une conversation dont le visiteur fait partie.
  • Push de campagnes — des campagnes push sortantes, qui signalent aussi une balise d’ouverture.

Les push de messages portent toujours un lien profond de la forme respondo://conversation/<id>. Les push de campagnes portent le lien profond configuré sur la campagne — il est facultatif, et lorsqu’il n’est pas défini, le push ne contient aucun lien profond.

Apple (APNs)#

Le push iOS s’appuie directement sur APNs — aucune dépendance à Firebase. Depuis votre compte Apple Developer, obtenez :

  • Une clé d’authentification APNs (clé de token .p8).
  • Le Key ID de cette clé.
  • Votre Team ID.
  • Le bundle id de l’application.

Google (FCM)#

Le push Android passe par Firebase Cloud Messaging. Depuis votre projet Firebase, obtenez :

  • Un JSON de compte de service avec le rôle Cloud Messaging.
  • L’ID de projet Firebase (console Firebase → Paramètres du projet) — saisi dans son propre champ du formulaire push du tableau de bord, à côté du JSON de compte de service.
  • Le nom de package de l’application Android, et connectez l’application au même projet Firebase (google-services.json).

Configurer dans Respondo#

Ajoutez la clé APNs et le compte de service FCM avec son ID de projet à votre canal de widget dans le tableau de bord. C’est tout ce dont Respondo a besoin pour envoyer vers les deux plateformes.

Le paramétrage des identifiants via l’API et la référence complète des champs sont couverts dans le guide de configuration du push livré avec votre accès au SDK.

Format du payload#

Le payload se trouve toujours sous une clé racine respondo — sa présence est la façon dont le SDK distingue son propre push des autres (sur iOS dans userInfo, sur Android sous forme de chaîne JSON dans data["respondo"]).

payload respondojson
{
  "respondo": {
    "type": "message",
    "conversation_id": "a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90",
    "message_id": "e9a3c1f6-4b8d-4e0a-b5f3-1d7b2a4e9c63",
    "deep_link": "respondo://conversation/a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90"
  }
}

Toutes les valeurs sont des chaînes à plat. Le titre et le corps de la notification sont livrés par le transport de la plateforme — aps.alert sur APNs et message.notification sur FCM — et non dans l’objet respondo.

Les push de campagnes incluent aussi un delivery_id utilisé pour signaler la balise d’ouverture, et peuvent porter des clés supplémentaires (chaînes à plat) issues des données push de la campagne.

Gestion des taps et du premier plan#

Au tap sur une notification, transmettez le payload brut au SDK. Il analyse le payload et ouvre la bonne conversation, en renvoyant false si le push n’est pas un push Respondo (gérez-le vous-même dans ce cas).

Gérer un tap (par plateforme)text
Android:  RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS:      Respondo.handlePush(userInfo: userInfo)
Flutter:  Respondo.handlePushData(message.data)

Les doublons sont regroupés par message_id, et tant que la même conversation est ouverte au premier plan, la notification système est supprimée — le SDK gère les deux automatiquement.

Enregistrer les tokens d’appareil#

Votre application obtient le token d’appareil auprès de son sous-système de push et le passe à setPushToken. Appelez clearPushToken à la déconnexion.

Quel token passer. Le backend route chaque remise par plateforme — iOS va directement vers APNs, Android va vers FCM — vous devez donc enregistrer le token du transport natif de la plateforme, et non celui que votre bibliothèque de push renvoie par hasard :
  • Android — le token d’enregistrement FCM issu de FirebaseMessaging.getToken().
  • iOS (natif) — le token d’appareil APNs (hex) issu de didRegisterForRemoteNotificationsWithDeviceToken.
  • iOS via Flutter (firebase_messaging) — utilisez getAPNSToken(), et non getToken(). Passer le token FCM sur iOS l’envoie à APNs, où ce n’est pas un token d’appareil valide et les push n’arrivent jamais. getAPNSToken() peut être null durant les premiers instants après le lancement — réessayez après un court délai le cas échéant.
Android — FirebaseMessagingServicekotlin
override fun onNewToken(token: String) {
    Respondo.setPushToken(token)
}
iOS — AppDelegateswift
func application(
    _ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
    let token = deviceToken.map { String(format: "%02x", $0) }.joined()
    Respondo.setPushToken(token)
}
Flutter — firebase_messagingdart
// iOS a besoin du token APNs ; Android a besoin du token FCM.
final token = Platform.isIOS
    ? await FirebaseMessaging.instance.getAPNSToken()
    : await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);

// FCM fait tourner son token d'enregistrement ; gardez Android synchronisé.
if (!Platform.isIOS) {
  FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}