Je suis curieux de savoir comment Android est capable d'envoyer des notifications. J'ai installé des applications telles que Gmail, Google+, Whatsapp, Twitter, etc., comment Android sait-il quand il y a un nouveau mail, un message Whatsapp ou un Tweet ? Est-ce quelque chose qui est géré par Android ou par l'application en cours d'exécution ? Quel genre de choses se passe en dessous ?
Réponses
Trop de publicités?Il s'agit d'un système très astucieux appelé "Push Notifications".
Comment cela fonctionne
Un appareil Android gardera une connexion active avec les serveurs de Google. Il s'agit d'une petite connexion, qui utilise très peu de données et d'énergie. Les notifications sont envoyées par les serveurs des développeurs d'applications, par exemple Twitter ou Facebook, les courriels, etc. aux serveurs de Google. L'appareil Android voit alors cette notification et la télécharge.
Je viens de trouver une meilleure explication sur Stackoverflow. La bonne explication de son fonctionnement peut être trouvée aquí . (Voici une citation de la première réponse, bien que la deuxième réponse soit plus facile à comprendre) :
Il y a simplement un socket TCP qui attend en mode d'acceptation sur un serveur Google en nuage. La connexion TCP a été initiée par l'application Goggle 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, celui-ci contient des informations telles que le nom du paquet 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 emballé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". Les applications n'ont pas besoin d'être en cours d'exécution pour recevoir les intentions.
Pourquoi l'utilisation des notifications push est utile
Le fait d'avoir une seule connexion ouverte signifie deux choses importantes :
Tout d'abord, votre appareil utilise moins de données et de bande passante pour se connecter à tous les serveurs tiers.
Deuxièmement, il consomme moins d'énergie, car les applications n'ont pas besoin d'être ouvertes en arrière-plan pour vérifier les notifications, puisque tout est géré par une seule application en arrière-plan.
Il est impossible de dire exactement comment il est mis en œuvre sans avoir accès au code source (ce que nous n'avons pas), mais en regardant les autorisations qu'Android exige pour installer ce genre d'applications, on peut supposer qu'il utilise une sorte de Technologie de poussée .
Dans ce type de système de messagerie, le serveur est l'initiateur de l'événement. En gros, l'application s'enregistre auprès d'un serveur central, qui, le cas échéant, envoie un événement au client, ce que vous voyez lorsque vous recevez un nouveau message Whatsapp, par exemple.
Vous pourriez obtenir plus d'informations aquí .
Toutes ces applications utilisent un service appelé Messagerie Google Cloud (anciennement connu sous le nom de "Cloud 2 Device Messaging", ce qui explique que l'autorisation de l'application correspondante porte toujours le nom de "Cloud 2 Device Messaging"). C2D
abréviation : com.google.Android.c2dm.permission.RECEIVE ).
En termes simples : Les applications qui l'utilisent s'enregistrent auprès des serveurs GCM au démarrage de votre appareil, et leur indiquent à quoi sert l'enregistrement. De l'autre côté, le service cible (Gmail, Google+, etc.) s'est également enregistré auprès de ces serveurs. Les serveurs GCM servent donc d'intermédiaires entre les deux : chaque fois qu'un nouvel "événement" se produit, l'appareil Android enregistré pour le service correspondant en est informé. Un gros avantage ici : au lieu que chaque application garde sa propre connexion réseau pour cela, seul le serveur GCM peut être utilisé. Services Google s'en chargera - et "réveillera" simplement l'application cible lorsqu'il y aura des nouvelles pour elle.