web-dev-qa-db-fra.com

Android: Délai de réception du message dans FCM (onMessageReceived)

Dans l'application de test, j'ai implémenté FCM pour l'envoi de messages de notification à l'aide de 

https://github.com/firebase/quickstart-Android/tree/master/messaging

Pour tester, j’envoyais le message (8:42 PM) depuis la console firebase en utilisant le "Nouveau message" sous Notification.

 Sent at 8:42 PM

Mais dans mon émulateur, j'ai reçu le message à 9:06 PM

 received at 9:06 PM

S'il vous plaît laissez-moi savoir s'il y a quelque chose à faire réduire le retard.

Je vous remercie.

11
karsas

Cela pourrait être dû aux intervalles de pulsation irréalistes dans Firebase Cloud Messaging.

FCM fonctionne en maintenant une connexion socket inactive d'un appareil Android aux serveurs de Google. C’est formidable, car la batterie consomme à peine (contrairement aux interrogations) et permet à l’appareil d’être réveillé instantanément lorsqu’un message arrive. 

Pour s'assurer que la connexion reste active, Android envoie une pulsation toutes les 28 minutes sur une connexion mobile et toutes les 15 minutes sur une connexion Wi-Fi. Si la pulsation a échoué, la connexion a été interrompue et FCM la rétablira et tentera de récupérer les notifications Push en attente. Plus l'intervalle de pulsation est élevé, moins la batterie est consommée et moins le périphérique doit être réveillé.

Toutefois, cela a un prix très intéressant: plus l'intervalle de pulsation est long, plus l'identification de la connexion avec une socket est interrompue. Google n'a pas suffisamment testé ces intervalles dans des situations réelles avant de déployer FCM. Le problème de ces intervalles est causé par les routeurs de réseau et les opérateurs de téléphonie mobile, qui déconnectent les connexions inactives après quelques minutes d'inactivité.

Plus d'informations sont disponibles sur mon blog:

http://eladnava.com/google-cloud-messaging-extremely-unreliable/

En guise de solution de contournement, considérez Pushy ( https://pushy.me ), solution de remplacement pour GCM/FCM, qui améliore considérablement la vitesse et la fiabilité des notifications (divulgation complète - j'ai fondé Pushy).

3
Elad Nava

Ma meilleure hypothèse est que cela a à voir avec le message priority .

De la docs:

Définir la priorité d'un message

Vous avez deux options pour attribuer une priorité de livraison aux messages en aval sur Android: priorité normale et haute. La remise des messages de priorité normale et élevée fonctionne comme suit:

Priorité normale. C'est la priorité par défaut pour les messages de données. Les messages de priorité normale n'ouvrent pas les connexions réseau sur un périphérique en veille et leur transmission peut être retardée pour préserver la batterie. Pour les messages moins urgents, tels que les notifications de nouveaux e-mails ou d'autres données à synchroniser, choisissez une priorité de livraison normale.

Haute priorité. C'est la priorité par défaut pour les messages de notification. FCM tente de délivrer immédiatement des messages de priorité élevée, permettant ainsi au service FCM de réactiver un périphérique en veille lorsque cela est possible et d'ouvrir une connexion réseau à votre serveur d'applications. Les applications avec alertes de messagerie instantanée, de discussion en ligne ou d'appels vocaux, par exemple, doivent généralement ouvrir une connexion réseau et s'assurer que FCM envoie le message au périphérique sans délai. Définissez une priorité élevée si le message est critique et requiert une interaction immédiate de l'utilisateur, mais sachez que le fait de définir vos messages avec une priorité élevée contribue davantage à l'épuisement de la batterie que les messages à priorité normale.

Je n'en suis pas certain, mais j'estime que la priorité normal est utilisée lorsque vous envoyez un message à "Tous les appareils Android", ce qui semble être le cas dans la question ci-dessus. Il est également possible qu’il soit envoyé à un sujet FCM, qui est optimisé pour le débit plutôt que pour la latence

Par conséquent, définir la priorité sur high ou envoyer à un appareil spécifique plutôt qu’à un sujet devrait réduire le délai que vous voyez.

Également; Sachez que les messages Push sont basés sur meilleur effort. Rien ne garantit que le message sera livré à une heure donnée, voire pas du tout. 

1
Automatico

Ce suivi des problèmes est dédié aux problèmes liés au démarrage rapide Android. Les gourous travaillant sur ce projet n'ont accès à aucun diagnostic permettant de résoudre les problèmes liés à FCM. S'il vous plaît contacter le support. https://firebase.google.com/support/

0
Mudasir Ahmed