2010-07-02 8 views
15

In Anbetracht, dass ich eine Push-Benachrichtigung auf meinem iPhone erhalten.iOS - Umgang mit Push-Benachrichtigungen mit APNS

Was geschieht:

  1. Wenn die Anwendung gestartet wird: Gibt es einen Weg, um die Nutzlast zu bekommen? Wird die Benachrichtigung auf meinem Bildschirm angezeigt?
  2. Wenn die Anwendung nicht gestartet wird, gibt es eine Möglichkeit, die Nutzlast zu erhalten?

Thx für Ihre Antworten

Antwort

34

Erste aller Push-Benachrichtigungen sind nicht „stark“, wenn Sie einfach eine Benachrichtigung sitzen für lange lassen genug (z Telefon für mehrere Tage ausgeschaltet) es verworfen bekommen. Sie müssen eine benutzerdefinierte Back-End-Verarbeitung durchführen, um den in Benachrichtigungen gesendeten Inhalt zu erhalten.

Im UIApplicationDelegate Protokoll gibt es application:didFinishLaunchingWithOptions:. Wenn Ihre App gestartet wird, indem der Benutzer in einem Alert von eine Push-Benachrichtigung auf die rechte Schaltfläche antippt, enthält das an den Methodenaufruf gebundene launchOptions Wörterbuch Informationen zu dieser Benachrichtigung. Wenn Ihre App bereits läuft, wird stattdessen application:didReceiveRemoteNotification: (ebenfalls im Delegate-Protokoll) aufgerufen.

So

  • Wenn die Anwendung gestartet wird, und Sie implementieren application:didReceiveRemoteNotification: dann ja erhalten Sie die Nutzlast. Sonst passiert nichts.

  • Wenn die Anwendung zum Zeitpunkt des Sendens der Benachrichtigung nicht gestartet wird, der Benutzer auf die Benachrichtigung der Benachrichtigung tippt und Ihre App startet, erhält Ihre Anwendung die Nutzlast, wenn sie application:didFinishLaunchingWithOptions: implementiert. Sonst bekommst du nichts.

+3

Ich habe festgestellt, dass irgendwann vor heute (07/03/2012) 'launchOptions' nicht mehr verwendet wird. Nach dem Öffnen der App wird stattdessen 'didReceiveRemoteNotification' aufgerufen. – Jacksonkr

+0

Wenn keine Warnung enthalten ist, wird die Methode didReceiveRemoteNotification: nie für Anwendungen mit Hintergrundinformationen aufgerufen. Mit iOS 6 ist es nicht möglich, Nutzdaten ohne Benutzerinteraktion zu empfangen, wenn sich Ihre App nicht im Vordergrund befindet. Die Dokumentation erwähnt diese Tatsache, wenn auch leise. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW4 –

+0

+1 Große Erklärung !! – swiftBoy