281 votes

Comment fonctionne la technologie de notification push sur Android?

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?

211voto

Tal Kanel Points 4049

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

169voto

Aniket Thakur Points 10135

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.

A pris auprès de : Source Voir aussi ici.

11voto

Shreesh Points 557

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.

1voto

Yury Points 10837

Oui tu as raison. Google avait un service (GTalk Service) et ce service demandait aux serveurs de Google à certaines périodes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X