2015-01-20 6 views
16

Es sieht so aus, als ob ich UIBackgroundFetchResultNewData oder UIBackgroundFetchResultNoData von performFetchWithCompletionHandler zurückgeben, löscht alle vorherigen Benachrichtigungen (lokal oder Push) für meine App. Das ist für mich nicht akzeptabel.iOS Hintergrund fetch löscht vorherige Benachrichtigungen

Wer weiß, wie ich abholen und vorherige Benachrichtigungen nicht gelöscht (verschwinden) mache?

+0

FYI habe ich einen 500-Punkte-Kopfgeld auf Ich glaube, dass ich auch alle Benachrichtigungen annehmen kann als stille und dann lokale Benachrichtigungen erneut starten, aber das scheint ultra seltsam. –

+0

@SamSaffron könnten Sie bitte Ihre Umgebung klären? iOS Version, Gerät/Simulator, funktioniert mit simulierten Abrufen von Xcode oder nicht, etc (kann diesen Fehler im Testprojekt nicht reproduzieren). –

+0

@RomanErmolov Ich denke, Sie sind hier richtig ... Ich vermisste total die Tatsache, dass die Einstellung Abzeichen 0 alle Benachrichtigungen löschen wird, ich vermute, das ist, was passiert ist mit dem OP und was ist passiert mit mir. –

Antwort

5

Meine Vermutung ist, dass Sie einen Hintergrund holen, der Ihre Ausweisnummer auf 0 gesetzt hat, wenn das passiert, werden alle Ihre Benachrichtigungen gelöscht.

3

Quelle: Apple's AppDelegate API Reference

application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 

Weist die App, die eine Remote-Benachrichtigung angekommen, die angibt, dort Daten abgerufen werden soll. Verwenden Sie diese Methode, um eingehende Remotebenachrichtigungen für Ihre App zu verarbeiten. Im Gegensatz zu der

application(_:didReceiveRemoteNotification:) 

Methode, die nur aufgerufen, wenn der App im Vordergrund ausgeführt wird, ruft das System dieser Methode, wenn Sie Ihre App im Vordergrund oder im Hintergrund ausgeführt wird. Wenn Sie den Hintergrundmodus für Remote-Benachrichtigungen aktiviert haben, startet das System Ihre App (oder weckt sie aus dem Status "Ausgesetzt") und versetzt sie in den Hintergrund, wenn eine Remote-Benachrichtigung eintrifft. Das System startet Ihre App jedoch nicht automatisch, wenn der Benutzer die Anwendung beendet hat. In diesem Fall muss der Nutzer Ihre App neu starten oder das Gerät neu starten, bevor das System versucht, Ihre App erneut automatisch zu starten. Wenn der Benutzer Ihre App über die vom System angezeigte Warnung öffnet, ruft das System diese Methode möglicherweise erneut auf, wenn Ihre App in den Vordergrund tritt, sodass Sie Ihre Benutzeroberfläche aktualisieren und Informationen zur Benachrichtigung anzeigen können.

Hinweis: Sie müssen sicherstellen, dass die App, bevor die Einstellungen für den Staat ist die Überprüfung der Ausweisnummer der Anwendung auf 0 Testen Sie die folgenden Fälle:

  • Anwendung ausgeführt wird, erhält eine Benachrichtigung

  • Anwendung beendet, erhält eine Benachrichtigung

  • Einführung App direkt aus dem App-icon

  • Einführung App Benachrichtigung erhalten

den Unterschied zwischen Wissen, das 3 unten genähert ist wichtig, in Ihren Anwendungsfall.

  1. Überprüfen der Benachrichtigungsobjekt erhalten in application(_:didReceiveRemoteNotification:)

  2. erhielt das Benachrichtigungsobjekt prüfen in application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

  3. die Überprüfung didFinishLaunchingWithOptions für UIApplicationLaunchOptionsRemoteNotificationKey

Verwandte Themen