Comment Google a-t-il mis en œuvre sa fonctionnalité de notification push? Est-ce que cela fonctionne grâce à une interrogation effectuée par un service exécuté en arrière-plan ou d'une manière différente?
Réponses
Trop de publicités?De ce que j'ai entendu lors d'un Android developers conference en Israël:
Il est tout simplement un socket TCP en attente dans le mode d'acceptation sur un nuage serveur de Google. La connexion TCP a été lancé par la Goggle Play". C'est pourquoi Google Play doit être installé sur l'appareil pour la fabrication de Google Cloud Messaging (GCM) (anciennement Android Cloud to Device Service de Messagerie - C2DM) de travail.
Lorsque ce protocole TCP socket client reçoit un message, le message contient des informations telles que le nom du package de l'application, elle doit être adressée, et bien sûr les données lui-même. Ces données sont analysées et emballé dans une intention qui est diffusée et finalement reçus par l'application.
Le socket TCP reste ouvert, même lorsque l'appareil radio de l'état se transforme en "idle mode". Les Applications n'ont pas à être en cours d'exécution pour recevoir les intentions.
Plus d'informations sur http://developer.android.com/google/gcm/gcm.html
Android continue d'un actif de connexion aux serveurs de Google, mais il n'utilise pas beaucoup de puissance ou de données, parce que personne ne le trafic est envoyé le long d'elle jusqu'à ce que quelque chose envoie un GCM message à une application sur votre téléphone. Il n'y a qu'une seule connexion sur le téléphone, utilisé par toutes les applications: installation d'une nouvelle application qui utilise GCM ne pas ajouter de charge supplémentaire.
La première étape de la GCM est qu'un serveur tiers (tel qu'un serveur de messagerie) envoie une requête à Google GCM serveur. Ce serveur envoie ensuite le message à votre appareil, par l'intermédiaire de cette connexion ouverte. Le système Android regarde le message pour déterminer l'application qui c'est, et démarre l'application. L'application doit être enregistré auprès de l'Android à utiliser GCM, et il doit avoir l'autorisation. Lorsque l'application démarre, il pourrait créer une notification tout de suite avec les données du message. GCM messages sont très limités en taille, de sorte que l'application puisse ouvrir une connexion au serveur tiers pour obtenir plus d'informations (par exemple, le téléchargement des en-têtes des nouveaux e-mails).
L'avantage d'utiliser les notifications push, c'est que les applications n'ont pas à exécuter à intervalles réguliers afin de vérifier les nouvelles données, un gain de puissance et de données. L'avantage d'avoir un mécanisme centralisé comme la GCM, c'est que l'appareil a besoin d'un réseau ouvert de la connexion et de l'Android GCM système est la seule chose à garder en cours d'exécution, plutôt que chaque application ayant pour rester en cours d'exécution en arrière-plan pour garder son propre réseau de connexion à son propre serveur.
Vous pouvez implémenter la notification push sur Android vous-même avec une longue connexion TCP d'interrogation. Mais cela impliquerait de maintenir une prise supplémentaire => batterie épuisée. Ou vous pouvez ouvrir une connexion à intervalles réguliers en utilisant Alarm Manager.
Google ouvre probablement un socket pour toutes les notifications push C2DM, d'où une efficacité accrue de la batterie.