Je sais qu'il existe déjà une bonne réponse à cette question, mais je pense qu'il pourrait également y avoir une réponse technique détaillée.
Lorsque vous installez sur votre téléphone une nouvelle application qui utilise les notifications push, et que vous lui donnez la permission d'accéder à l'internet, elle enregistre l'intérêt de son site web de service push auprès du service de notification push de Google sur votre téléphone.
Le service Google Push enregistrera ensuite l'intérêt pour les mises à jour auprès du serveur de notification push de l'application via des Web Sockets. Cela se produira aussi automatiquement lorsque vous allumerez votre téléphone après l'installation de l'application.
Lorsqu'une mise à jour se produit, le message est transmis du serveur de notification push au service Google Push. Il est ensuite transmis à l'application intéressée, qui se réveille si elle est endormie, ou qui charge son code de surveillance push s'il n'est pas chargé pour charger la notification et vous avertir du message.
Lorsque vous allumez votre téléphone et qu'il enregistre des intérêts en une seule fois, vous risquez de recevoir une avalanche de notifications push. Il s'agit de toutes les notifications depuis la dernière fois que l'application a notifié le serveur au moment où vous les lisez. Cela se fait de manière standard dans les Web Sockets pour vous mettre à jour dans ce pour quoi vous avez déclaré votre intérêt.
Certaines applications peuvent disposer d'un serveur qui envoie un message push générique à l'application Google Push pour qu'elle réveille l'application réelle, qui récupère alors le véritable message push. Ce n'est pas le cas de tous les services. Cela est fait pour des raisons de sécurité et de confidentialité.
La raison pour laquelle le service de notification push de Google est utilisé comme intermédiaire est simplement le fait qu'il est toujours en cours d'exécution, contrairement à presque toutes les autres applications de votre téléphone. Il sera toujours là pour recevoir une notification push. Bien que vous puissiez le contourner, vous risquez de manquer des notifications si votre application n'est pas en cours d'exécution lorsqu'elles arrivent.
4 votes
La question est légèrement différente mais la réponse est la même : Comment certaines applications affichent-elles de nouvelles notifications lorsque l'accès à l'internet leur est interdit ?
2 votes
Lorsque vous installez une application, il est possible que vous installiez plus que l'"application" que vous voyez à l'écran. Ces applications peuvent également installer des services qui tournent en arrière-plan, qu'ils soient ou non visibles dans les "applications précédentes". Notez également que ces "applications précédentes" ne sont pas réellement en cours d'exécution lorsque vous les regardez dans cette vue - elles sont suspendues et ne reviennent à la vie que lorsque vous les ramenez au premier plan.
1 votes
Par exemple, une application comme Life 360 que vous n'avez jamais besoin d'ouvrir lorsque vous démarrez votre téléphone, vérifie de temps en temps votre position et la transmet au serveur sur l'internet. L'application Life360 elle-même n'est pas en cours d'exécution, mais le service qu'elle a installé l'est.
1 votes
@Steve, ce que vous dites, c'est que même si une application n'exécute pas d'activité (la partie visible d'une application), elle peut avoir un service en arrière-plan qui reçoit et affiche les notifications. Ce n'est pas exact. Depuis Android 8, les applications ne peuvent pas exécuter de services en arrière-plan. Elles doivent soit exécuter un service de premier plan (avec des notifications persistantes ; voir l'exemple de Télégramme ) ou ils doivent compter sur le système d'exploitation pour les réveiller en cas de besoin (par exemple en utilisant BroadcastReceiver, Alarm, WorkManager, JobScheduler, etc.)
3 votes
Mais sur un appareil pris en charge par Google, les services Google Play fonctionnent toujours en arrière-plan (
com.google.android.gms.gcm.GcmService
) qui maintient une connexion réseau avec le serveur Firebase pour recevoir les messages push et les transmettre aux applications cibles. Play Services étant une application système privilégiée, elle n'est pas soumise aux restrictions des services d'arrière-plan. En plus deGcmService
Le GMS fait également fonctionner un certain nombre d'autres services en arrière-plan (généralement plus de 20). Vous pouvez trouver un processus nommécom.google.android.gms.persistent
fonctionne toujours sur n'importe quel appareil compatible avec le GMS.1 votes
@IrfanLatif Je travaille sur des connaissances vieilles de plusieurs années... merci de corriger.