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.
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
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 –
+1 Große Erklärung !! – swiftBoy