Google Cloud Messaging
Avertissement
Google a déconseillé GCM depuis le 10 avril 2018. Les documents et exemples de projets suivants peuvent ne plus être conservés. Le serveur GCM et les API clientes de Google seront supprimées dès le 29 mai 2019. Google recommande de migrer des applications GCM vers Firebase Cloud Messaging (FCM). Pour plus d’informations sur la dépréciation et la migration de GCM, consultez Google Deprecated Cloud Messaging.
Pour commencer à utiliser Firebase Cloud Messaging avec Xamarin, consultez Firebase Cloud Messaging.
Google Cloud Messaging (GCM) 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 GCM et explique comment configurer Google Services afin que votre application puisse utiliser GCM.
Cette rubrique fournit une vue d’ensemble générale de la façon dont Google Cloud Messaging achemine les messages entre votre application 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 GCM.
Vue d’ensemble
Google Cloud Messaging (GCM) est un service qui gère l’envoi, le routage et la mise en file d’attente des messages entre les applications serveur et les applications clientes mobiles. Une application cliente est une application avec GCM qui s’exécute sur un appareil. Le serveur d’applications (fourni par vous-même ou votre entreprise) est le serveur avec lequel votre application cliente communique via GCM :
À l’aide de GCM, les serveurs d’applications peuvent envoyer des messages à un seul appareil, à un groupe d’appareils ou à un certain nombre d’appareils abonnés à une rubrique. Votre application cliente peut utiliser GCM pour s’abonner aux messages en aval d’un serveur d’applications (par exemple, pour recevoir des notifications à distance). En outre, GCM permet aux applications clientes d’envoyer des messages amont au serveur d’applications.
Google Cloud Messaging en action
Lorsque des messages en aval sont envoyés d’un serveur d’applications à une application cliente, le serveur d’applications envoie le message à un serveur de connexion GCM ; à son tour, le serveur de connexion GCM transfère le message à un appareil qui exécute votre 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 GCM met en file d’attente et stocke les messages, les envoyant aux applications clientes à mesure qu’elles se reconnectent et deviennent disponibles. De même, GCM met la file d’attente amont messages de l’application cliente vers le serveur d’applications si le serveur d’applications n’est pas disponible.
GCM utilise les informations d’identification suivantes pour identifier le serveur d’applications et votre application cliente, et il utilise ces informations d’identification pour autoriser les transactions de messages via GCM :
Clé API : la clé API donne à votre serveur d’applications l’accès aux services Google ; GCM utilise cette clé pour authentifier votre serveur d’applications. Avant de pouvoir utiliser le service GCM, vous devez d’abord obtenir une clé API à partir de la console de développement Google en créant un projet. La clé API doit être sécurisée ; Pour plus d’informations sur la protection de votre clé API, consultez Meilleures pratiques pour l’utilisation sécurisée de clés API.
ID de l’expéditeur : l’ID d’expéditeur autorise le serveur d’applications à votre application cliente. Il s’agit d’un numéro unique qui identifie le serveur d’applications autorisé à envoyer des messages à votre 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 Google Developers lorsque vous inscrivez votre projet.
Jeton d’inscription : le jeton d’inscription est l’identité GCM 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 GCM lors de l’exécution sur un appareil. Le jeton d’inscription autorise un instance de votre application cliente (exécutée sur cet appareil particulier) à recevoir des messages de GCM.
ID d’application : identité de votre application cliente (indépendamment d’un appareil donné) qui s’inscrit pour recevoir des messages de GCM. Sur Android, l’ID d’application est le nom du package enregistré dans AndroidManifest.xml, par
com.xamarin.gcmexample
exemple .
Configuration de Google 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.
Les sections suivantes expliquent comment ces informations d’identification sont utilisées lorsque les applications clientes communiquent avec les serveurs d’applications via GCM.
Inscription auprès de GCM
Une application cliente installée sur un appareil doit d’abord s’inscrire auprès de GCM 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 GCM pour obtenir un jeton d’inscription, en passant l’ID de l’expéditeur à GCM.
GCM retourne un jeton d’inscription à l’application cliente.
L’application cliente 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. Si vous le souhaitez, 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.
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 reçoit des messages de rubrique (expliqué plus loin dans cet article), elle peut se désabonner de la rubrique. Si l’application cliente est désinstallée d’un appareil, GCM le détecte et avertit automatiquement le serveur d’applications de supprimer le jeton d’inscription.
Messagerie en aval
Lorsque le serveur d’applications envoie un message en aval à l’application cliente, il suit les étapes illustrées dans le diagramme suivant :
Le serveur d’applications envoie le message à GCM.
Si l’appareil client n’est pas disponible, le serveur GCM stocke le message dans une file d’attente pour une transmission ultérieure.
Lorsque l’appareil client est disponible, GCM envoie le message à l’application cliente sur cet appareil.
L’application cliente reçoit le message de GCM et le gère en conséquence. Par exemple, si le message est une notification à distance, il est présenté à l’utilisateur.
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 (y compris des exemples de code) sur la réception de messages GCM en aval sur Android, consultez Notifications à distance.
Messagerie de rubrique
La messagerie de rubrique est un type de messagerie en aval où le serveur d’applications envoie un seul message à plusieurs appareils d’application client qui s’abonnent à une rubrique (par exemple, une prévision météorologique). Les messages de rubrique peuvent être d’une longueur maximale de 2 Ko, et la messagerie de rubrique prend en charge jusqu’à un million d’abonnements par application. Si GCM est utilisé uniquement pour la messagerie de rubrique, l’application cliente n’est pas tenue d’envoyer un jeton d’inscription au serveur d’applications.
Messagerie de groupe
La messagerie de groupe est un type de messagerie en aval où le serveur d’applications envoie un seul message à plusieurs appareils d’application client appartenant à un groupe (par exemple, un groupe d’appareils appartenant à un seul utilisateur). Les messages de groupe peuvent avoir jusqu’à 2 Ko de longueur pour les appareils iOS et jusqu’à 4 Ko pour les appareils Android. Un groupe est limité à un maximum de 20 membres.
Messagerie en amont
Si votre application cliente se connecte à un serveur qui prend en charge XMPP, elle peut renvoyer des messages au serveur d’applications, comme illustré dans le diagramme suivant :
L’application cliente envoie un message au serveur de connexion GCM XMPP.
Si le serveur d’applications est déconnecté, le serveur GCM stocke le message dans une file d’attente pour un transfert ultérieur.
Lorsque le serveur d’applications est re-connecté, GCM transfère le message au serveur d’applications.
Le serveur d’applications analyse le message pour vérifier l’identité de l’application cliente, puis envoie un « ack » à GCM pour accuser réception du message.
Le serveur d’applications traite le message.
Les messages en amont de Google expliquent comment structurer les messages encodés au format JSON et les envoyer aux serveurs d’applications qui exécutent le serveur de connexion cloud basé sur XMPP de Google.
Configuration de Google Cloud Messaging
Avant de pouvoir utiliser les services GCM dans votre application, vous devez d’abord acquérir des informations d’identification pour accéder aux serveurs GCM de Google. Les sections suivantes décrivent les étapes requises pour effectuer ce processus :
Activer les services Google pour votre application
Connectez-vous à la console Google Developers avec votre compte Google (c’est-à-dire, votre adresse gmail) et créez un projet. Si vous avez un projet existant, choisissez le projet que vous souhaitez activer pour GCM. Dans l’exemple suivant, un nouveau projet appelé XamarinGCM est créé :
Ensuite, entrez le nom du package de votre application (dans cet exemple, le nom du package est com.xamarin.gcmexample), puis cliquez sur Continuer pour choisir et configurer les services :
Notez que ce nom de package est également l’ID d’application de votre application.
La section Choisir et configurer des services répertorie les services Google que vous pouvez ajouter à votre application. Cliquez sur Cloud Messaging :
Ensuite, cliquez sur ACTIVER GOOGLE CLOUD MESSAGING :
Une clé API de serveur et un ID d’expéditeur sont générés pour votre application. Enregistrez ces valeurs et cliquez sur FERMER :
Protéger la clé API : elle n’est pas destinée à une utilisation publique. Si la clé API est compromise, les serveurs non autorisés peuvent publier des messages vers les applications clientes. Les bonnes pratiques d’utilisation sécurisée des clés API fournissent des instructions utiles pour la protection de votre clé API.
Afficher les paramètres de votre projet
Vous pouvez afficher les paramètres de votre projet à tout moment en vous connectant à la console Google Cloud et en sélectionnant votre projet. Par exemple, vous pouvez afficher l’ID de l’expéditeur en sélectionnant votre projet dans le menu déroulant en haut de la page (dans cet exemple, le projet est appelé XamarinGCM). L’ID de l’expéditeur est le numéro de projet, comme indiqué dans cette capture d’écran (l’ID de l’expéditeur est ici 9349932736) :
Pour afficher la clé API, cliquez sur Gestionnaire d’API , puis sur Informations d’identification :
Pour obtenir des informations supplémentaires
- RFC 6120 et RFC 6121 expliquent et définissent le protocole XMPP (Extensible Messaging and Presence Protocol).
Résumé
Cet article fournit une vue d’ensemble de Google Cloud Messaging (GCM). 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 de messagerie les plus courants et détaillé les étapes d’inscription de votre application auprès de GCM pour utiliser les services GCM.