web-dev-qa-db-fra.com

Surveillance de la livraison GCM Android

Je développe un client mobile pour un service de messagerie. L'une des fonctionnalités clés est la notification des nouveaux messages dans la boîte aux lettres. Conformément aux recommandations de l’architecture de GCM, nous utilisons un "pousseur" chargé d’envoyer des messages aux serveurs de Google une fois que nous avons reçu un nouveau message. Le problème est que le processus de test a signalé des problèmes graves liés à la livraison de notifications Push aux périphériques. 

La question est donc la suivante: existe-t-il une approche permettant de surveiller les statistiques moyennes concernant le pourcentage de livraison des notifications Push, le temps, etc.? Ou peut-être quelqu'un a-t-il de l'expérience dans la configuration d'un environnement de test afin de surveiller efficacement le nombre de notifications perdues pendant le travail de l'application?

Tous les "trucs et astuces" relatifs à l'amélioration de l'expérience Android GCM sont les bienvenus.

24
rus1f1kat0R

Depuis lors, Google fournit aux développeurs un outil de surveillance avancé.

L'outil de diagnostic Gcm est disponible dans la console pour développeurs de Google Play. Des informations supplémentaires sont disponibles ici https://support.google.com/googleplay/Android-developer/answer/2663268

Ainsi, vous pouvez facilement suivre l'état du message particulier via un jeton d'enregistrement.

0
rus1f1kat0R

Google affirme que le traitement sur son serveur GCM prend moins d'une milliseconde. Lien ci-dessous pour une superbe vidéo sur GCM du développeur de Google. Et c’est crédible, car je pouvais recevoir des notifications Push presque instantanément en utilisant le serveur de mon entreprise sur mon appareil.

http://www.youtube.com/watch?v=YoaP6hcDctM

Ils ne garantissent pas la livraison, mais essaient de transmettre le message pendant 4 semaines maximum, en fonction de la durée que vous avez définie dans le message que vous envoyez aux serveurs GCM de Google et si vous souhaitez laisser Google conserver les données pour une éventuelle remise du message. à l'appareil au cas où l'appareil était hors ligne lorsque le message devait être remis. 

Cependant, il existe certaines conditions dans lesquelles les messages GCM ne sont pas remis.

  1. Les données en arrière-plan sont désélectionnées sous Paramètres du compte et de la synchronisation.
  2. Avant la version 4.0.4 (ICS), un compte Google sur l'appareil était une condition préalable à GCM. Peut-être que les utilisateurs ne sont pas connectés à leur compte Google.
21
Nitin Sethi

La seule façon de le faire est de faire rapport à votre serveur avec l'horodatage du Push reçu.

Tu peux soit

  1. Reportez-vous au serveur une fois que vous avez reçu la notification dans votre service GCM. Pour l'implémenter, vous devez ajouter un identifiant Push pour vos notifications Push et l'envoyer avec les données Push. Le client devra obtenir l'horodatage une fois qu'il aura reçu le message et le renverra avec l'identifiant de notification. Un simple script php peut être fait (lorsque vous envoyez une notification Push, vous définissez l'heure du message send-notification et une fois qu'il reçoit l'horodatage du périphérique, il définit le receive-notification . Ceci se résume à deux champs de votre base de données (en caractères gras). Dans cette approche, vous ne vous soucierez probablement pas autant des erreurs car il est très probable que le périphérique aura une connexion à la réception de la notification et que sa demande sera adressée à votre serveur. à travers.

  2. Conservez une liste des notifications reçues dans votre application et leurs horodatages. Et lorsque la synchronisation est terminée, envoyez ces données lors de votre opération de synchronisation. En fin de compte, c’est la même approche, mais les données de votre serveur ne seront pas aussi réelles que la première approche. Toutefois, la demande supplémentaire n'est pas requise du côté client, mais l'enregistrement des notifications reçues et de leur horodatage est.

Dans l’ensemble, vous devrez garder une trace des notifications envoyées à l’aide d’un notification-id et de leur heure d’envoi ( send-notification ) et de leur heure de réception ( receive-notification ). Une simple requête vous aidera à analyser ces données. 

6
Sherif elKhatib

Google a ajouté un support afin que vous puissiez recevoir les accusés de réception de Cloud Connection Server (CCS):

Vous pouvez utiliser la messagerie en amont pour obtenir les accusés de réception (envoyés par CCS à votre serveur d'applications tiers) lorsqu'un périphérique confirme qu'il a reçu un message envoyé par CCS. 

Pour activer cette fonctionnalité, le message que votre serveur d'applications tiers envoie au CCS doit inclure un champ appelé "delivery_receipt_requested". Lorsque ce champ est défini sur true, CCS envoie un accusé de réception lorsqu'un périphérique confirme qu'il a reçu un message particulier.

https://developer.Android.com/google/gcm/ccs.html#receipts

5
Juuso Ohtonen

Google ne met pas ces statistiques à votre disposition. Certaines statistiques sont disponibles sur la console de développement Android. Ceci montre seulement le nombre de messages et d’enregistrements.

Vous devrez mettre en œuvre votre propre collecte de données, ce qui pourrait se faire assez facilement. Vous pouvez enregistrer l'heure et l'identifiant de chaque message envoyé et demander à votre client Android de faire rapport à votre serveur avec l'heure de réception du message. Vous pouvez ensuite stocker les données sur votre serveur et interroger au besoin. 

2
Patrick