webentwicklung-frage-antwort-db.com.de

Analysieren Sie die Warnung von didReceiveRemoteNotification: fetchCompletionHandler

Ich erhalte eine Fehlermeldung, nachdem ich diesen Code von parse.com hinzugefügt habe:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

Ich verstehe nicht wirklich, was los ist, aber ich erhalte diese Warnung im Protokoll:

Sie haben - [application: didReceiveRemoteNotification: fetchCompletionHandler:] implementiert, müssen der Liste der unterstützten UIBackgroundModes in Ihrer Info.plist jedoch noch "remote-notification" hinzufügen.

Ich denke, in Ihrer plist-Datei hinzufügen UIBackgroundModes - remote-notification würde das Problem beheben,

Aber wenn ich das tue, werden die Wörter folgendermaßen geändert:

Required Background Modes -> App downloads content in response to Push notifications

Was meine App nicht kann, und ich bin verwirrt, warum ich das überhaupt mache.

67
Arian Faurtosh

Wenn Sie nicht beabsichtigen, Daten als Antwort auf eine Remotebenachrichtigung abzurufen, können Sie die folgende Delegierungsmethode implementieren:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

z.B.

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

anstelle des aktuellen, den Sie verwenden.

32
djshiow

Wenn Sie den Schlüssel nicht manuell in Ihre .plist - Datei einfügen möchten, finden Sie hier eine grafische Version der Antwort von @ MurraySagal. Befolgen Sie die Schritte 1 bis 7, und Sie sind fertig. :)

enter image description here

Hinweis: Wenn Sie die Schritte nicht auslesen können, können Sie die aktuelle Registerkarte mithilfe der Kombination aus verkleinern Command++ (zum Vergrößern) und Command+- (zum Verkleinern). Ob Command wird nicht funktionieren, können Sie mit versuchen Ctrl.

209
Hemang

Ich denke, dass @djshiow Ihr Problem nicht löst.

Sie müssen Folgendes in Ihre info.plist-Datei einfügen:

remote-notification

1) Fügen Sie eine neue Zeile hinzu und wählen Sie in der linken Spalte Erforderliche Hintergrundmodi .

2) Klicken Sie in Zeile 0 auf die rechte Spalte und geben Sie Folgendes ein: Remote-Benachrichtigung . Drücken Sie Enter.

Quelle: http://hayageek.com/ios-silent-Push-notifications/

37
jomafer

In Xcode 6:

  • Klicken Sie im Projektnavigator auf das Projekt
  • Klicken Sie in der Liste Projekte und Ziele auf das Ziel.
  • Klicken Sie auf Funktionen
  • Erweitern und aktivieren Sie die Hintergrundmodi
  • Klicken Sie auf Remote Notifications

Dies fügt das Required background modes Schlüssel und App downloads content in response to Push notifications Wert bis info.plist.

22
Murray Sagal

Wenn Sie die neue didReceive ... -Methode verwenden, müssen Sie zwei Dinge tun:

  1. Fügen Sie den erforderlichen Eintrag in Ihre Liste ein
  2. Fügen Sie einen Completion-Handler hinzu, der das Ereignis für die Verarbeitung der Daten behandelt

Wenn Sie keine Daten herunterladen möchten, können Sie dies zu Ihrer didReceive ... -Methode hinzufügen

completionHandler(.NoData)
0
goggelj