web-dev-qa-db-fra.com

Fiabilité APNS (Apple Push Notification Service)

Notre application utilise APNS pour recevoir des notifications push. Cependant, notre client affirme que certains de ses appareils ne recevaient pas de notifications et affirme qu'ils doivent "s'assurer" que les notifications sont livrées à 100%. Mais j'ai lu quelque part qu'APNS n'est pas fiable à 100% et qu'il devrait y avoir des cas où les notifications ne sont pas livrées. 

Je suis actuellement pris de panique à savoir comment nous pourrions nous assurer qu'APNS soit reçu à tout moment. J'ai lu que un cas qui peut ne pas être livré par APNS (le périphérique peut être déconnecté). Mais notre test a montré que même si l'appareil est en ligne (Wifi ou 3G), des APNS n'étaient parfois pas livrés. 

Existe-t-il des cas spécifiques pour lesquels APNS ne sera pas livré? Ou bien y-a-t-il quelque chose que nous (développeurs) pouvons faire avec des codes pour nous assurer de recevoir toutes les notifications? Ce que j'ai fait dans le code est simplement d'enregistrer l'application dans une notification à distance et d'écrire didRegisterForRemoteNotificationsWithDeviceToken, puis de jeter le jeton de périphérique sur notre serveur. 

Toute aide serait la bienvenue, car notre client nous tuerait presque si TOUS leurs appareils ne recevaient pas APNS!

34
Faust V
  1. APNS est basé sur les serveurs Apple et Apple ne donne aucune garantie quant à la remise réussie des messages.
  2. Si l'application est ouverte (c'est-à-dire si l'utilisateur l'utilise) pendant que la notification arrive, iOS n'affiche pas de message de notification, vous devez le gérer.
  3. La notification ne s'affiche que lorsque l'application est en arrière-plan ou supprimée. 
  4. Implémentez également le service de retour d'informations côté serveur vous aidera à vous débarrasser d'anciens jetons indésirables (les utilisateurs qui ont supprimé l'application ou désactivé les notifications via les paramètres).
  5. N'envoyez pas trop de notifications à un périphérique dans un court laps de temps, car APNS ne met en cache qu'un seul message/périphérique (si le périphérique est hors ligne). Ainsi, il peut transmettre le message lorsque l'appareil est mis en ligne. Je ne sais pas combien de temps le message est mis en cache cependant.

Ou simplement mettre en œuvre Pusher ... http://pusher.com

45
Karthik

Nous sommes confrontés au même problème. Comme tout le monde l’a dit, APNS est un service best effort. Vous ne pouvez donc pas être sûr que toutes les notifications seront envoyées, mais vous pouvez savoir quelles sont celles qui ont été reçues. C'est ce que nous sommes sur le point de faire. Nous enregistrons dans notre backend chaque notification que ship et l'application mobile rend compte de chaque notification reçue. Ensuite, nous fixons un délai maximum d'attente pour recevoir une notification. Si nous ne recevons pas le rapport, nous réessayons.

J'espère que cela pourrait être utile à quelqu'un (même 2 ans plus tard)

8
pdaire

Il est clairement indiqué dans les documents Apple Docs qu’il n’est pas garanti à 100% et qu’il ne devrait pas non plus être utilisé comme tel. Son envoyé avec "meilleur effort".

3
steve

Selon les directives d'Apple, APNS n'est pas un service fiable à 100%, cela signifie que votre application peut ne pas recevoir les notifications Push des serveurs Apple pour l'une des raisons suivantes:

  • L'appareil est hors ligne 
  • Votre application est à l’état de premier plan, vous devez gérer la notification Push.

Remarque: Apple rejette l'application qui rend obligatoire l'utilisation de services de notification. (Je l'ai affronté dans l'une de mes applications) 

Pour plus d'informations, vous pouvez regarder dans cette réponse 

https://stackoverflow.com/a/25830955/3278326

0
Jarvis The Avenger