Comment Google a-t-il mis en œuvre sa fonction de notification push? Cela fonctionne-t-il grâce à l'interrogation effectuée par un service exécuté en arrière-plan ou d'une manière différente?
Comment Google a-t-il mis en œuvre sa fonction de notification push? Cela fonctionne-t-il grâce à l'interrogation effectuée par un service exécuté en arrière-plan ou d'une manière différente?
Réponses:
D'après ce que j'ai entendu lors d'une conférence des développeurs Android en Israël:
Il y a simplement une socket TCP attente dans le mode accepter sur un serveur Google Cloud. La connexion TCP avait été lancée par l'application Google Play. C'est pourquoi Google Play doit être installé sur l'appareil pour que Google Cloud Messaging (GCM) (anciennement Android Cloud to Device Messaging Service - C2DM ) fonctionne.
Lorsque ce socket client TCP reçoit un message, le message contient des informations telles que le nom du package de l'application à laquelle il doit être adressé, et bien sûr - les données elles-mêmes. Ces données sont analysées et regroupées dans une intention qui est diffusée et finalement reçue par l'application.
Le socket TCP reste ouvert même lorsque l'état radio de l'appareil passe en mode "inactif". Il n'est pas nécessaire que les applications soient en cours d'exécution pour recevoir les intentions.
Plus d'informations sur http://developer.android.com/google/gcm/gcm.html
Android conserve une connexion active aux serveurs de Google, mais il n'utilise pas beaucoup d'énergie ou de données, car aucun trafic n'est envoyé jusqu'à ce que quelque chose envoie un message Google Cloud Messaging (GCM) à une application sur votre téléphone. Il n'y a qu'une seule connexion sur le téléphone, utilisée par toutes les applications: l'installation d'une nouvelle application qui utilise GCM n'ajoute aucune charge supplémentaire.
La première étape de GCM est qu'un serveur tiers (tel qu'un serveur de messagerie) envoie une demande au serveur GCM de Google. Ce serveur envoie ensuite le message à votre appareil, via cette connexion ouverte. Le système Android examine le message pour déterminer à quelle application il est destiné et démarre cette application. L'application doit être enregistrée auprès d'Android pour utiliser GCM, et elle doit avoir l'autorisation appropriée. Lorsque l'application démarre, elle peut créer immédiatement une notification avec les données du message. La taille des messages GCM est très limitée, de sorte que l'application peut plutôt ouvrir une connexion normale au serveur tiers pour obtenir plus d'informations (par exemple, télécharger les en-têtes des nouveaux e-mails).
L'avantage de l'utilisation des notifications push est que les applications n'ont pas à s'exécuter à intervalles réguliers pour rechercher de nouvelles données, économisant ainsi de l'énergie et des données. L'avantage d'avoir un mécanisme centralisé comme GCM est que l'appareil n'a besoin que d'une connexion réseau ouverte et que le système Android GCM est la seule chose qui doit continuer à fonctionner, plutôt que chaque application doive continuer à fonctionner en arrière-plan pour conserver son propre réseau connexion à son propre serveur.
Vous pouvez implémenter la notification push sur Android vous-même avec une longue connexion TCP de polling. Mais cela impliquerait de maintenir une prise supplémentaire => décharge de la batterie. Ou vous pouvez ouvrir une connexion à intervalles réguliers à l'aide du gestionnaire d'alarmes.
Google ouvre probablement un socket pour toutes les notifications push C2DM, d'où sa batterie plus efficace.
Depuis le 10 avril 2018, Google a déprécié GCM. Les API client et serveur GCM sont obsolètes et seront supprimées dès le 11 avril 2019. Migrez les applications GCM vers Firebase Cloud Messaging (FCM), qui hérite de l'infrastructure GCM fiable et évolutive, ainsi que de nombreuses nouvelles fonctionnalités.
Sur les appareils Android, lorsque vous recevez des notifications push, l'image de l'application expéditeur et un message apparaissent dans la barre d'état. Exactement lorsque le client appuie sur la notification, il atterrit sur la demande.