web-dev-qa-db-de.com

Zuverlässigkeit von APNS (Apple Push Notification Service)

Unsere App verwendet APNS, um Push-Benachrichtigungen zu erhalten. Unser Kunde behauptet jedoch, dass einige seiner Geräte keine Benachrichtigungen erhalten haben, und argumentiert, dass sie "müssen", um sicherzustellen, dass die Benachrichtigungen zu 100% zugestellt werden. Ich habe irgendwo gelesen, dass APNS nicht 100% zuverlässig ist und es Fälle geben sollte, in denen die Benachrichtigungen nicht übermittelt werden. 

Momentan bin ich in Panik, wie wir sicherstellen können, dass APNS jederzeit empfangen wird. Ich habe das a case gelesen, das APNS nicht ausgeliefert hat (Gerät kann offline sein). Aber unser Test zeigt, dass sogar das Gerät online ist (Wifi oder 3G), manchmal wurden APNS nicht ausgeliefert. 

Gibt es einen speziellen Fall, den APNS nicht liefern kann? Oder können wir (Entwickler) etwas mit Codes tun, um alle Benachrichtigungen zu erhalten? Was ich im Code getan habe, ist die Registrierung der App für die Remote-Benachrichtigung und das Schreiben von didRegisterForRemoteNotificationsWithDeviceToken. Dann wird das Gerätetoken auf den Server geworfen. 

Jede Hilfe wäre dankbar, denn unser Kunde bringt uns fast um, wenn ALLE Geräte keine APNS erhalten!

34
Faust V
  1. APNS basiert auf Apple Servern, und Apple gibt keine Garantie für die erfolgreiche Zustellung von Nachrichten.
  2. Wenn die App geöffnet ist (d. H. Der Benutzer verwendet die App), während die Benachrichtigung eintrifft, zeigt iOS keine Benachrichtigungsnachricht an, Sie müssen damit umgehen.
  3. Die Benachrichtigung wird nur angezeigt, wenn die App im Hintergrund ist oder beendet wird. 
  4. Implementieren Sie auch einen Feedback-Service auf Ihrer Serverseite. hilft Ihnen dabei, alte unerwünschte Token (Benutzer, die die App gelöscht haben, zu deaktivieren oder Benachrichtigungen durch Einstellungen zu deaktivieren).
  5. Senden Sie nicht zu viele Benachrichtigungen innerhalb kurzer Zeit an ein Gerät. Coz APNS speichert nur 1 Nachricht/Gerät (wenn das Gerät offline ist). So kann die Nachricht übermittelt werden, wenn das Gerät online ist. Ich bin nicht sicher, wie lange die Nachricht zwischengespeichert wird.

Oder einfach Pusher implementieren ... http://pusher.com

45
Karthik

Wir stehen vor demselben Problem. Wie alle sagten, APNS ist ein Best Effort - Dienst. Sie können also nicht sicher sein, dass jede Benachrichtigung zugestellt wird. Was Sie dagegen tun können, ist sich zu vergewissern, wer welche erhalten hat. Das ist es, was wir tun werden. Wir registrieren in unserem Backend jede Benachrichtigungswarteschlange ship und die mobile App meldet jede empfangene Benachrichtigung zurück. Dann legen wir eine maximale Wartezeit für den Empfang einer Benachrichtigung fest. Wenn wir den Bericht nicht erhalten, versuchen wir es erneut.

Ich hoffe, es kann jemandem helfen (auch 2 Jahre später)

8
pdaire

In den Apple Docs heißt es ganz klar, dass es nicht zu 100% garantiert ist und auch nicht so verwendet werden sollte. Es wird mit "bester Anstrengung" gesendet.

3
steve

Laut den Richtlinien von Apple ist APNS kein 100% iger zuverlässiger Dienst. Dies bedeutet, dass Ihre App aus folgenden Gründen möglicherweise keine Push-Benachrichtigungen von Apple-Servern erhält:

  • Gerät ist offline 
  • Ihre App befindet sich im Vordergrund. Sie müssen die Push-Benachrichtigung verwalten.

Hinweis: Apple lehnt die App ab, die den Benachrichtigungsdienst zwingt. (Ich habe es in einer meiner App gesehen) 

Weitere Informationen finden Sie in dieser Antwort 

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

0