2009-10-28 5 views
3

Je vois un comportement très étrange des serveurs Apple Push Notification Server lorsque l'iPhone destinataire est éteint. Voici mon scénario:Comportement de notification push étrange Apple lorsque l'iPhone de réception est éteint

-Envoyer la notification push A à Apple. En quelques secondes, une fenêtre de notification push s'affiche comme prévu sur l'iPhone.
-Envoyer une notification vide à Apple pour annuler le précédent (la notification précédente est inutile après environ 10 secondes, c'est pourquoi je veux m'en débarrasser). Rien affiché sur l'iPhone.
-Éteignez complètement l'iPhone (pas de veille, il est éteint).
-Envoyer la notification push B à Apple. Attendez 10 secondes.
-Envoyer une notification vide à Apple pour annuler le précédent. Attendez 10 secondes.
-Envoyer la notification push C à Apple. Attendez 10 secondes.
-Envoyer une notification vide à Apple pour annuler le précédent. Attendez 30 secondes.
-Activer l'iPhone.
-Après environ 60 secondes, un message contextuel de notification push s'affiche pour la notification B sur l'iPhone.
-Notification C ne semble jamais arriver.

Ceci est très étrange! En lisant les documents Apple, je n'attendais que la dernière notification push à envoyer. J'espérais que ma notification vide serait envoyée, je ne m'attendais certainement pas à recevoir la plus ancienne notification push non envoyée!

Les documents d'Apple disent:

Push d'Apple Service de notification comprend une qualité par défaut du composant de service (QoS) qui effectue une fonction de stockage et de l'avant. Si APNS tente de délivrer une notification mais que l'appareil est hors ligne, la QoS stocke la notification. Il ne conserve qu'une seule notification par application sur un périphérique: la dernière notification reçue d'un fournisseur pour cette application. Lorsque le périphérique hors connexion se reconnecte ultérieurement, la QoS transmet la notification stockée à l'appareil. La QoS conserve une notification pendant une période limitée avant de la supprimer.

Quelqu'un a vu ce comportement? Suis-je juste frapper une sorte de bug de fenêtre de synchronisation? Que devrait-il se passer?

Mises à jour:
Je -Si éteindre le téléphone et attendre 5 à 15 minutes avant d'envoyer des notifications push alors ce problème ne se produit pas. Dans ce cas, lorsque je mets le téléphone sous tension, je ne vois aucune fenêtre de notification, bien que je ne sois pas sûr que cela soit dû au fait qu'Apple ait laissé tomber la notification ou que sa 'file d'attente' fonctionne correctement. du premier avec le popup).
-J'étudierai plus loin en mettant un APNsLogging.mobileconfig sur l'iPhone pour voir quelles notifications il a reçues.
-La désactivation du Wi-Fi ne semble pas modifier les résultats.
-J'ai soulevé un rapport de bug avec Apple pour ce scénario.

+0

Que voulez-vous dire annuler le précédent? Vous ne pouvez pas annuler une notification après son envoi. – erotsppa

+0

Les nouvelles notifications push effacent les notifications précédentes sur l'iPhone qui les reçoit. Vous pouvez donc annuler une notification précédente en envoyant une nouvelle notification vide sans message contextuel. Cela fonctionne principalement bien pour moi. –

Répondre

1

Pour mémoire, j'ai soulevé comme bug ID # 7349660 avec Apple le 29 oct (https://bugreport.apple.com), puis leur a donné les diagnostics supplémentaires qu'ils voulaient le 30 octobre

Aucune réponse d'Apple depuis, donc je Je suppose que c'est probablement juste bas sur leur liste de priorités, ce qui est assez juste car c'est une petite fenêtre de timing où le problème peut se produire (ce que je n'avais pas réalisé quand j'ai ouvert cette question pour la première fois).

3

Vous pouvez vérifier ce comportement sur les réseaux cellulaires et WiFi. Il y a beaucoup de comportement étrange lorsque le téléphone est en WiFi, surtout s'il y a plusieurs routeurs NAT impliqués, par exemple dans une grande entreprise où il y a un routeur principal et des routeurs WiFi par étage ou dans une maison où vous avez plusieurs routeurs étendre la gamme. Mais sur cellule, ça a été plutôt solide.

De plus, le délai d'annulation de 10 secondes peut être trop court. Ils ne garantissent pas la livraison en temps voulu et j'ai eu des retards de 3 minutes sur le serveur de production après avoir mis en attente une demande de push. Vous pouvez planifier la congestion du système.

Dans les deux cas, il semble que ce soit digne d'un rapport de bugreporter.

0

Dans le document de la pomme, il est dit qu'il peut mettre en cache la notification push jusqu'à 30 days.so u peut obtenir pousser une fois que vous allumez votre iPhone (à condition que vous avez interconnexion)

+0

Avez-vous lu mon message, ou juste le titre? Oui, je sais - dans mon article, j'explique que je reçois une notification push après avoir rallumé le téléphone. Mais ce n'est que la première poussée d'une série de quatre, ma question est de savoir si ce devrait être la poussée la plus récente, pas la plus ancienne. –

0

Combien de temps a été C envoyé après B? Il semble que ce soit un bug où il y a une sorte de côté serveur timeout, et ils gardent accidentellement B si C a été envoyé trop tôt après ...

Si vous avez un bon exemple de test (et cela semble être un bon exemple) test) Je déposerais un rapport radar à ce sujet.

+0

Mon test avait environ 10 secondes entre chaque notification push. Je prévois de retester et de modifier certains intervalles de temps pour voir si je peux changer le comportement, puis je vais soulever un bug avec Apple (https://bugreport.apple.com). –

Questions connexes