2013-09-25 1 views
5

Meine App empfängt APNs, die vom Server an das Apple-Back-End gesendet werden. Natürlich kann ein Benutzer die App nicht öffnen, sobald eine Benachrichtigung auf dem Gerät des Benutzers eintrifft. In der Zwischenzeit kann mein Server mehr Benachrichtigungen pushen. Sie enthalten alle einige Benutzerdaten, die wichtig sind, wenn eine Benachrichtigung verarbeitet wird. So, wie man damit umgeht? iOS wird nicht bündeln und mir einen Stapel geben, oder?Wie wird mit mehreren Push-Benachrichtigungen mit Benutzerdaten zu unterschiedlichen Zeiten reagiert?

Hier sind Wege, wie ich es angehen werde, von denen keiner einfach ist.

  1. Der Server verfolgt die nicht gesehenen Daten und bei der Ankunft einer neuen Anfrage wird immer ein Stapel aller neuen Benachrichtigungen gesendet, die den Zählerstand als Badge widerspiegeln.
  2. Der Client wird geöffnet, indem Sie auf das Benachrichtigungs-Popup tippen. In diesem Fall wurden alle Daten in didReceiveRemoteNotification benötigt. ODER
  3. Client ignoriert Benachrichtigung Popup und öffnet App (möglicherweise später) durch Tippen auf App-Symbol. In diesem Fall wird didReceiveRemoteNotification nicht aufgerufen und somit muss die App alle benötigten Daten vom Server holen.
  4. Der Server sendet niemals Benutzerdaten und der Client sucht bei jedem Start nach neuen Daten oder ruft Daten in didReceiveRemoteNotification ab.

Sonst noch etwas? Etwas Einfacheres fehlt mir?

+0

@Virussmca Ich wette, viele, die mit APNs beschäftigen. Ich hoffte, dass jemand deswegen gut damit umgegangen ist. Präsentierte Optionen schaffen mehr Trubel, aber ich fürchte, ich musste mit ihnen umgehen. Es scheint auch so, als ob mehrere App-Einstiegspunkte von UIApplication berücksichtigt werden müssen. – Schultz9999

Antwort

1

Nummer 4 ist der richtige Ansatz. Es gibt keine Garantie, dass einer Ihrer App-Codes ausgeführt wird, wenn ein APN empfangen wird, mit Ausnahme von iOS7. Wenn Ihre App gestartet wird, muss sie bei Ihren Servern nach neuen Informationen suchen, die angezeigt werden sollen.

Am einfachsten ist es, dies zu codieren immer fragen Sie Ihre Server für die neuesten Informationen anzuzeigen, anstatt sich auf die Informationen in der APN verlassen. Verwenden Sie die Informationen im APN nur, um zu bestimmen, zu welchen neuen Informationen navigiert werden soll, damit die App anzeigt, was der Benutzer angetippt hat.

Dies hat sich mit iOS7 geändert, wo Sie den remote-notification Hintergrundmodus starten können, sobald eine Push-Nachricht eintrifft. Siehe https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler:

+0

schlägt deine Antwort schließlich vor, niemals "content-available: 1" zu haben. Im Grunde hast du nur gesagt, niemals stille Benachrichtigungen zu verwenden ... – Honey