didReceiveRemoteNotification funktioniert nicht im Hintergrund
Arbeite ich an einem großen app mit einem großen chunk von legacy-code.
Derzeit gibt es eine Implementierung für:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Das problem ist, dass es nur aufgerufen, wenn die app im Vordergrund ist, ODER wenn der Benutzer tippt auf die Benachrichtigung, wenn die app im hintergrund ist.
Ich habe versucht zu implementieren:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
Aber die app verhält.
In jedem Fall - diese Methode wird nicht aufgerufen, wenn die app im hintergrund ist.
Was könnte das problem sein?
Kommentar zu dem Problem
Es ist normal, dass die Methode nicht aufgerufen, wenn die app im hintergrund ist. System werden Sie Benachrichtigen die Benachrichtigung über die Eingabeaufforderung eine Warnung anzeigen oder ein banner.
Was ist die iOS-version von Ihrem Gerät? Ist es mindestens 7? Da
fetchCompletionHandler:
erfordert mindestens iOS 7. InformationsquelleAutor der Frage YogevSitton | 2015-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umsetzung
didReceiveRemoteNotification
unddidReceiveRemoteNotification:fetchCompletionHandler
ist der richtige Weg, aber Sie müssen auch Folgendes tun:Stellen Sie sicher, dass die Registrierung für remote-Benachrichtigungen, sehen Dokumentation hier:
Stellen Sie außerdem sicher, zu Bearbeiten
Info.plist
und überprüfen Sie die Option "Hintergrund-Modus" und "Remote-Benachrichtigungen" check-Boxen:Darüber hinaus müssen Sie
"content-available":1
zu den push-notification payload, da sonst die app nicht geweckt werden, wenn es im hintergrund (siehe Dokumentation hier):So die Nutzlast sollte mindestens so Aussehen:
InformationsquelleAutor der Antwort Baris Akar
InformationsquelleAutor der Antwort Mahadev Mandale
Ich hatte das gleiche problem. Notification-banner erschien, aber -Anwendung:didReceiveRemoteNotification:fetchCompletionHandler: Methode wurde nicht aufgerufen. Die Lösung für mich arbeitete, war die Beurteilung der Umsetzung der - Anwendung:didReceiveRemoteNotification: Methode und forward-call-Anwendung:didReceiveRemoteNotification:fetchCompletionHandler::
InformationsquelleAutor der Antwort ZaEeM ZaFaR