Types de messages Firebase Cloud Messaging

Avec FCM, vous pouvez envoyer deux types de messages à vos applications clientes :

  • Les messages de notification, semblables aux "messages d'affichage", sont gérés automatiquement par le SDK FCM. (Sur Android avec AndroidConfigV2, utilisez RemoteNotification pour tous les messages qui affichent une notification visible par l'utilisateur afin qu'ils soient distribués sans délai prévu. Les notifications s'affichent automatiquement, que l'application soit au premier plan ou en arrière-plan, sauf si elles sont explicitement désactivées dans le code client.)
  • Les messages de données, qui sont gérés par l'application cliente.

Les messages de notification contiennent un ensemble prédéfini de clés visibles par l'utilisateur et peuvent contenir une charge utile de données facultative. En revanche, les messages de données ne contiennent que vos paires clé/valeur personnalisées définies par l'utilisateur. La charge utile maximale pour les deux types de messages est de 4 096 octets, sauf lors de l'envoi de messages depuis la console Firebase, qui applique un nombre maximal de caractères de 1 000.

Scénario d'utilisation Comment envoyer
Message de la notification Le SDK FCM affiche le message sur les appareils des utilisateurs finaux au nom de l'application cliente lorsqu'elle s'exécute en arrière-plan. Sinon, si l'application s'exécute au premier plan lorsque la notification est reçue, le code de l'application détermine le comportement.
  1. Dans un environnement de confiance tel que Cloud Functions ou votre serveur d'application, utilisez le Firebase Admin SDK ou l'API HTTP v1. Définissez la clé notification. Peut comporter une charge utile de données facultative. Toujours réductible.

    Consultez des exemples de notifications d'affichage et envoyez des charges utiles de requête.

  2. Utilisez l' outil de création de notifications : saisissez le texte du message, le titre, etc., puis envoyez-le. Ajoutez une charge utile de données facultative en fournissant des données personnalisées.
Message data L'application cliente est chargée de traiter les messages de données. Les messages de données ne comportent que des paires clé/valeur personnalisées sans noms de clés réservés (voir ci-dessous). Dans un environnement de confiance tel que Cloud Functions ou votre serveur d'application, utilisez le Firebase Admin SDK ou l'API HTTP v1. Dans la requête d'envoi, définissez la clé data.

Vous pouvez utiliser des messages de notification lorsque vous souhaitez que le SDK FCM gère automatiquement l'affichage d'une notification lorsque votre application s'exécute en arrière-plan. FCM peut envoyer un message de notification avec une charge utile de données facultative. Dans ce cas, FCM affiche la charge utile de notification, et l'application cliente gère la charge utile de données.

Vous pouvez utiliser des messages de données lorsque vous souhaitez traiter les messages avec le code de votre propre application cliente.

Messages de notification

Vous pouvez envoyer des messages de notification à l'aide de la console Firebase, de Firebase Admin SDK ou de l'API FCM HTTP v1. La console Firebase propose des tests A/B basés sur l'analyse pour vous aider à affiner et à améliorer vos messages de notification.

Pour envoyer des messages de notification à l'aide de l'API HTTP v1 Firebase Admin SDK ou FCM, définissez la clé notification avec l'ensemble prédéfini d'options clé-valeur du message de notification. Vous pouvez utiliser l'exemple suivant pour mettre en forme un message de notification dans une application de messagerie instantanée.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Les messages de notification sont envoyés dans la barre de notification lorsque l'application est exécutée en arrière-plan. Pour les applications au premier plan, les messages sont gérés par une fonction de rappel.

Vous pouvez consulter la documentation de référence sur l'objet de notification de l'API FCM HTTP v1 pour obtenir la liste complète des clés prédéfinies disponibles pour créer des messages de notification.

Messages de données

C'est à vous de décider comment vous souhaitez utiliser la charge utile FCM data pour implémenter le schéma de chiffrement de votre choix. Veillez à ne pas utiliser de mots réservés dans vos paires clé-valeur personnalisées. Les mots réservés incluent from, message_type ou tout mot commençant par google., gcm. ou gcm.notification..

L'exemple suivant montre l'utilisation du champ de données de premier niveau ou commun, qui est interprété par les clients sur toutes les plates-formes qui reçoivent le message. Sur chaque plate-forme, l'application cliente reçoit la charge utile de données dans une fonction de rappel.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Messages de notification avec charge utile de données facultative

Vous pouvez envoyer des messages de notification contenant une charge utile facultative de paires clé-valeur personnalisées de manière programmatique ou à l'aide de la console Firebase. Dans l'outil de création de notifications, utilisez les champs Données personnalisées dans Options avancées.

Le comportement de l'application lorsqu'elle reçoit des messages incluant à la fois des charges utiles de notification et de données dépend de son exécution en arrière-plan ou au premier plan, c'est-à-dire de son activité ou non au moment de la réception.

  • En arrière-plan, les applications reçoivent la charge utile de notification dans la barre de notification et ne gèrent la charge utile de données que lorsque l'utilisateur appuie sur la notification.
  • Lorsqu'elle est exécutée au premier plan, votre application reçoit un objet de message avec les deux charges utiles disponibles.

Voici un message au format JSON contenant à la fois la clé notification et la clé data :

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}