firebase-cloud-messagingDémarrer avec firebase-cloud-messaging


Remarques

Une question commune notoire est "comment envoyer des notifications de périphérique à périphérique", malheureusement la réponse est: vous ne pouvez pas. FCM doit être déclenché pour envoyer des notifications push. Cela peut se faire de 3 manières différentes:

  1. Directement dans la console Web Firebase
  2. Définition d'un écouteur Firebase Functions, puis déclenchement du FCM
  3. Un serveur demande au FCM d'envoyer une notification push

Une notification push est une charge d'informations envoyée par FCM. Il existe 3 types de notifications push: notification , data , notification and data . Ces informations peuvent être représentées sous forme de JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

L'exemple ci-dessus concerne le troisième type, notification et data combinées. C'est ce que l'on demandera à FCM d'envoyer.

  1. La console peut envoyer une notification et une notification avec des data mais jamais uniquement des data
  2. Les fonctions et tout serveur peuvent envoyer les 3 types

L'importance du type de notification est de permettre aux applications de recevoir des envois par défaut permettant à d'autres équipes, telles que le marketing, d'accroître la croissance des applications en utilisant simplement la console Web sans avoir à ajouter la bibliothèque au projet.

S'il vous plaît ne pas confondre la notification push, le type de notification et la notification visuelle, ce dernier correspond à une classe Android (généralement NotificationCompat).

Le comportement de la poussée est différent selon le type et si l'application est au premier plan ou en arrière-plan. Pas sur les moyens de premier plan, minimisés ou fermés.

  1. notification déclenchera une notification visuelle par défaut si l'application n'est pas au premier plan , cette notification peut être personnalisée dans le manifeste, veuillez consulter la documentation . Si l'application est au premier plan, nous devons personnaliser le comportement à l'intérieur de la méthode onMessageReceived .
  2. data comportement du type de data doit toujours être personnalisé.
  3. La notification combinée et les data si l'application n'est pas au premier plan déclencheront une notification visuelle par défaut et data charge de data sera disponible lorsque l'utilisateur cliquera. Comme l'activité du lanceur est déclenchée lorsque l'utilisateur clique sur la notification visuelle, il faut littéralement getIntent().getStringExtra("yourKey"); dans cette activité pour obtenir les données. Si l'application est active (au premier plan), vous devez personnaliser le comportement à l'intérieur de la méthode onMessageReceived et accéder immédiatement à la charge de data .

Pour obtenir la charge d’information que vous devez faire dans la méthode onMessageReceived , le seul argument disponible est le message:

  1. Pour obtenir la notification vous avez à remoteMessage.getNotification() vous pouvez obtenir le corps ou le titre avec les méthodes correspondantes
  2. Pour obtenir les data vous avez à remoteMessage.getData().get("yourKey") .

C'est une bonne idée d'ajouter toutes les vérifications non nulles , il y aura plusieurs types de notifications arrivant dans les applications avancées. Une bonne stratégie consiste à vérifier si chacun, la notification et les data ne sont pas nuls. Une stratégie utile consistera à toujours utiliser une clé de type dans les notifications de data afin de contrôler le flux.

Pour envoyer des data depuis la console Web Firebase, les options avancées doivent être ouvertes.

Les clés de notification sont limitées et indiquées dans la documentation. Les valeurs de tout type ne peuvent être que de la chaîne .

Si vous avez des problèmes pour trouver de la documentation dans Firebase, veuillez vous rendre au bas de la page et changer la langue pour "English", les documentations sont plus fines dans certaines autres langues.

Installation ou configuration

Firebase Cloud Messaging est le service Firebase qui gère les notifications push. Vous pouvez ajouter ce service dans n'importe quel client: Web, Android ou IOS. Le fonctionnement spécifique de chacun doit être lu dans la documentation .

Pour ajouter FCM à tout type de projet, ajoute toujours une bibliothèque .

Considérant que le support spécial pour Android est digne de prendre quelques lignes pour cela. Créez un nouveau projet en utilisant Android Studio, dans le menu allez dans Tools / Firebase, cela déclenchera l'assistant Firebase. Sélectionnez "Cloud Messaging" et suivez les étapes 1 et 2.

  1. Si votre projet ajoute précédemment un autre service Firebase, la première étape sera marquée comme terminée, sinon vous devez le faire. La première étape vous permet de créer un projet dans Firebase ou d'en créer un nouveau. Cette étape téléchargera un fichier google-service.json ayant la configuration nécessaire pour se connecter au projet Firebase. Ce fichier se trouve dans le dossier "app".
  2. Cette étape ajoute la bibliothèque Google Services et la bibliothèque Firebase à la gradle, elle effectuera également une configuration supplémentaire dans ces fichiers.

Ceci est la base pour l'ajout de FCM dans un projet. À partir de ce moment, le client est déjà en mesure de recevoir des notifications push FCM contenant une charge utile "notification" tant que l'application n'est pas au premier plan (plus de détails dans les remarques).

Pour personnaliser davantage le comportement du FCM dans le client, nous devons ajouter 2 services, ceci est bien documenté sur le site officiel. Encore une fois, nous prendrons en considération Android:

  1. Créez une classe qui étend FirebaseMessagingService et remplacez la méthode onMessageReceived
  2. Créez une classe qui étend FirebaseInstanceIdService et remplacez la méthode onTokenRefresh
  3. Enregistrez les deux classes dans le manifeste, veuillez le faire dans la balise d' application </ intent-filter> </ intent-filter>

Vous pouvez obtenir la charge utile de notification et la charge utile de data dans la méthode onMessageReceived utilisant le seul argument qui s'y trouve. La méthode onTokenRefresh est appelée lorsque le jeton FCM est attribué par FCM. Un jeton FCM est un identifiant unique pour l'installation de l'application et l'appareil et peut être utilisé comme adresse du périphérique pour envoyer directement des notifications push.

Veuillez lire les remarques pour plus d'informations sur les types de notification et le comportement associé.