Firebase Cloud Messaging
Firebase Cloud Messaging (FCM) est un service qui facilite la messagerie entre les applications mobiles et les applications serveur. Cet article fournit une vue d’ensemble du fonctionnement de FCM et explique comment configurer Google Services afin que votre application puisse utiliser FCM.
Cette rubrique fournit une vue d’ensemble générale de la façon dont Firebase Cloud Messaging achemine les messages entre votre application Xamarin.Android et un serveur d’applications, et fournit une procédure pas à pas pour l’acquisition d’informations d’identification afin que votre application puisse utiliser les services FCM.
Vue d’ensemble
Firebase Cloud Messaging (FCM) est un service multiplateforme qui gère l’envoi, le routage et la mise en file d’attente de messages entre les applications serveur et les applications clientes mobiles. FCM est le successeur de Google Cloud Messaging (GCM) et s’appuie sur Google Play Services.
Comme illustré dans le diagramme suivant, FCM joue le rôle d’intermédiaire entre les expéditeurs de messages et les clients. Une application cliente est une application avec FCM qui s’exécute sur un appareil. Le serveur d’applications (fourni par vous ou votre entreprise) est le serveur FCM avec lequel votre application cliente communique via FCM. Contrairement à GCM, FCM vous permet d’envoyer des messages aux applications clientes directement via l’interface graphique graphique des notifications de la console Firebase :
À l’aide de FCM, les serveurs d’applications peuvent envoyer des messages à un seul appareil, à un groupe d’appareils ou à un certain nombre d’appareils qui sont abonnés à une rubrique. Une application cliente peut utiliser FCM pour s’abonner aux messages en aval d’un serveur d’applications (par exemple, pour recevoir des notifications à distance). Pour plus d’informations sur les différents types de messages Firebase, consultez À propos des messages FCM.
Firebase Cloud Messaging en action
Lorsqu’un message en aval est envoyé à une application cliente à partir d’un serveur d’applications, celui-ci envoie le message à un serveur de connexion FCM fourni par Google ; le serveur de connexion FCM, à son tour, transfère le message à un appareil qui exécute l’application cliente. Les messages peuvent être envoyés via HTTP ou XMPP (Extensible Messaging and Presence Protocol). Étant donné que les applications clientes ne sont pas toujours connectées ou en cours d’exécution, le serveur de connexion FCM met en file d’attente et stocke des messages, les envoyant aux applications clientes à mesure qu’elles se reconnectent et deviennent disponibles. De même, FCM met la file d’attente amont messages de l’application cliente au serveur d’applications si le serveur d’applications n’est pas disponible. Pour plus d’informations sur les serveurs de connexion FCM, consultez À propos de Firebase Cloud Messaging Server.
FCM utilise les informations d’identification suivantes pour identifier le serveur d’applications et l’application cliente, et il utilise ces informations d’identification pour autoriser les transactions de messages via FCM :
ID de l’expéditeur : l’ID de l’expéditeur est une valeur numérique unique qui est affectée lorsque vous créez votre projet Firebase. L’ID de l’expéditeur est utilisé pour identifier chaque serveur d’applications qui peut envoyer des messages à l’application cliente. L’ID de l’expéditeur est également votre numéro de projet ; vous obtenez l’ID de l’expéditeur à partir de la console Firebase lorsque vous inscrivez votre projet. Un exemple d’ID d’expéditeur est
496915549731
.Clé API : la clé API donne au serveur d’applications l’accès aux services Firebase ; FCM utilise cette clé pour authentifier le serveur d’applications. Ces informations d’identification sont également appelées clé de serveur ou clé API web. Un exemple de clé API est
AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk
.ID d’application : identité de votre application cliente (indépendamment d’un appareil donné) qui s’inscrit pour recevoir des messages de FCM. Un exemple d’ID d’application est
1:415712510732:android:0e1eb7a661af2460
.Jeton d’inscription : le jeton d’inscription (également appelé ID d’instance) est l’identité FCM de votre application cliente sur un appareil donné. Le jeton d’inscription est généré au moment de l’exécution : votre application reçoit un jeton d’inscription lorsqu’elle s’inscrit pour la première fois auprès de FCM lors de l’exécution sur un appareil. Le jeton d’inscription autorise un instance de votre application cliente (en cours d’exécution sur cet appareil particulier) à recevoir des messages de FCM. Un exemple de jeton d’inscription est
fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS
(chaîne très longue).
La configuration de Firebase Cloud Messaging (plus loin dans ce guide) fournit des instructions détaillées pour créer un projet et générer ces informations d’identification. Lorsque vous créez un projet dans la console Firebase, un fichier d’informations d’identification appelé google-services.json est créé. Ajoutez ce fichier à votre projet Xamarin.Android, comme expliqué dans Notifications à distance avec FCM.
Les sections suivantes expliquent comment ces informations d’identification sont utilisées lorsque les applications clientes communiquent avec les serveurs d’applications via FCM.
Inscription auprès de FCM
Une application cliente doit d’abord s’inscrire auprès de FCM avant que la messagerie puisse avoir lieu. L’application cliente doit effectuer les étapes d’inscription indiquées dans le diagramme suivant :
L’application cliente contacte FCM pour obtenir un jeton d’inscription, en passant l’ID de l’expéditeur, la clé API et l’ID d’application à FCM.
FCM retourne un jeton d’inscription à l’application cliente.
L’application cliente (éventuellement) transfère le jeton d’inscription au serveur d’applications.
Le serveur d’applications met en cache le jeton d’inscription pour les communications ultérieures avec l’application cliente. Le serveur d’applications peut renvoyer un accusé de réception à l’application cliente pour indiquer que le jeton d’inscription a été reçu. Une fois cette négociation effectuée, l’application cliente peut recevoir des messages (ou envoyer des messages à) du serveur d’applications. L’application cliente peut recevoir un nouveau jeton d’inscription si l’ancien jeton est compromis (consultez Notifications à distance avec FCM pour obtenir un exemple de la façon dont une application reçoit les mises à jour du jeton d’inscription).
Lorsque l’application cliente ne souhaite plus recevoir de messages du serveur d’applications, elle peut envoyer une demande au serveur d’applications pour supprimer le jeton d’inscription. Si l’application cliente est désinstallée d’un appareil, FCM le détecte et avertit automatiquement le serveur d’applications de supprimer le jeton d’inscription.
Messagerie en aval
Le diagramme suivant illustre la façon dont Firebase Cloud Messaging stocke et transfère les messages en aval :
Lorsque le serveur d’applications envoie un message en aval à l’application cliente, il utilise les étapes suivantes, comme indiqué dans le diagramme ci-dessus :
Le serveur d’applications envoie le message à FCM.
Si l’appareil client n’est pas disponible, le serveur FCM stocke le message dans une file d’attente pour une transmission ultérieure. Les messages sont conservés dans le stockage FCM pendant un maximum de 4 semaines (pour plus d’informations, consultez Définition de la durée de vie d’un message).
Lorsque l’appareil client est disponible, FCM transfère le message à l’application cliente sur cet appareil.
L’application cliente reçoit le message de FCM, le traite et l’affiche à l’utilisateur. Par exemple, si le message est une notification distante, il est présenté à l’utilisateur dans la zone de notification.
Dans ce scénario de messagerie (où le serveur d’applications envoie un message à une seule application cliente), les messages peuvent avoir une longueur maximale de 4 ko.
Pour plus d’informations sur la réception de messages FCM en aval sur Android, consultez Notifications à distance avec FCM.
Messagerie de rubrique
La messagerie de rubrique permet à un serveur d’applications d’envoyer un message à plusieurs appareils qui ont choisi de participer à une rubrique particulière. Vous pouvez également composer et envoyer des messages de rubrique via l’interface graphique graphique des notifications de la console Firebase. FCM gère le routage et la remise des messages de rubrique aux clients abonnés. Cette fonctionnalité peut être utilisée pour les messages tels que les alertes météo, les cours boursiers et les actualités.
Les étapes suivantes sont utilisées dans la messagerie de rubrique (une fois que l’application cliente a obtenu un jeton d’inscription, comme expliqué précédemment) :
L’application cliente s’abonne à une rubrique en envoyant un message d’abonnement à FCM.
Le serveur d’applications envoie des messages de rubrique à FCM pour distribution.
FCM transfère les messages de rubrique aux clients qui se sont abonnés à cette rubrique.
Pour plus d’informations sur la messagerie de rubrique Firebase, consultez La rubrique Messagerie de Google sur Android.
Configuration de Firebase Cloud Messaging
Avant de pouvoir utiliser les services FCM dans votre application, vous devez créer un projet (ou importer un projet existant) via la console Firebase. Procédez comme suit pour créer un projet Firebase Cloud Messaging pour votre application :
Connectez-vous à la console Firebase avec votre compte Google (c’est-à-dire votre adresse Gmail) et cliquez sur CRÉER UN NOUVEAU PROJET :
Si vous avez un projet existant, cliquez sur Importer un projet Google.
Dans la boîte de dialogue Créer un projet , entrez le nom de votre projet, puis cliquez sur CRÉER UN PROJET. Dans l’exemple suivant, un nouveau projet appelé XamarinFCM est créé :
Dans la vue d’ensemble de la console Firebase, cliquez sur Ajouter Firebase à votre application Android :
Dans l’écran suivant, entrez le nom du package de votre application. Dans cet exemple, le nom du package est com.xamarin.fcmexample. Cette valeur doit correspondre au nom du package de votre application Android. Un surnom d’application peut également être entré dans le champ Surnom de l’application :
Si votre application utilise des liens dynamiques, des invitations ou Google Authentification, vous devez également entrer votre certificat de signature de débogage. Pour plus d’informations sur la localisation de votre certificat de signature, consultez Recherche de la signature MD5 ou SHA1 de votre keystore. Dans cet exemple, le certificat de signature est laissé vide.
Cliquez sur AJOUTER UNE APPLICATION :
Une clé API de serveur et un ID client sont générés automatiquement pour l’application. Ces informations sont empaquetées dans un fichier google-services.json qui est automatiquement téléchargé lorsque vous cliquez sur AJOUTER UNE APPLICATION. Veillez à enregistrer ce fichier dans un endroit sûr.
Pour obtenir un exemple détaillé d’ajout de google-services.json à un projet d’application pour recevoir des messages de notification Push FCM sur Android, consultez Notifications à distance avec FCM.
Pour aller plus loin
Firebase Cloud Messaging de Google fournit une vue d’ensemble des fonctionnalités clés de Firebase Cloud Messaging, une explication de son fonctionnement et des instructions de configuration.
L’article Build App Server Send Requests de Google explique comment envoyer des messages avec votre serveur d’applications.
RFC 6120 et RFC 6121 expliquent et définissent le protocole XMPP (Extensible Messaging and Presence Protocol).
À propos des messages FCM décrit les différents types de messages qui peuvent être envoyés avec Firebase Cloud Messaging.
Résumé
Cet article fournit une vue d’ensemble de Firebase Cloud Messaging (FCM). Il a expliqué les différentes informations d’identification utilisées pour identifier et autoriser la messagerie entre les serveurs d’applications et les applications clientes. Il a illustré les scénarios d’inscription et de messagerie en aval, et il a détaillé les étapes d’inscription de votre application auprès de FCM pour utiliser les services FCM.