2013-10-28 1 views
6

Laut didReceiveRemoteNotification when in background konnten wir den Benutzer, der die App öffnete, durch Klicken auf die Aktionsschaltfläche einer Push-Benachrichtigung (oder Wischen auf der Push-Benachrichtigung, je nachdem, wie der Benutzer Push-Benachrichtigungen sieht) durch Implementierung von -application:didReceiveRemoteNotification: und anschließender Überprüfung behandeln innerhalb der Methode, ob die Anwendung applicationState nicht aktiv war.Wie kann ich feststellen, ob der Benutzer die App mit der Benachrichtigung mit dem Remote-Benachrichtigungs-Hintergrundmodus von iOS 7 geöffnet hat?

In iOS 7 gibt es den neuen Hintergrundmodus remote-notification, der es der App ermöglicht, Hintergrundabruf durchzuführen, wenn dem Benutzer eine Remotebenachrichtigung angezeigt wird (ohne dass der Benutzer irgendetwas mit der Benachrichtigung unternimmt). Um diesen Modus zu unterstützen, müssen Sie die Methode -application:didReceiveRemoteNotification:fetchCompletionHandler: implementieren.

The documentation for -application:didReceiveRemoteNotification: besagt, dass, wenn Ihr Anwendungsdelegat die Methode application:didReceiveRemoteNotification:fetchCompletionHandler: implementiert, "das App-Objekt diese Methode anstelle dieser Methode aufruft". Das bedeutet, dass wir -application:didReceiveRemoteNotification: nicht mehr verwenden können, um Remote-Benachrichtigungen zu verarbeiten, da es nicht aufgerufen wird.

Wir sollten wahrscheinlich Handhabungslogik in application:didReceiveRemoteNotification:fetchCompletionHandler: setzen, aber der vorherige Trick zur Handhabung macht keinen Sinn mehr - vorher waren wir darauf angewiesen, dass die einzige Möglichkeit für -application:didReceiveRemoteNotification: aufgerufen werden, wenn die App nicht aktiv ist war, wenn der Benutzer die Aktionsschaltfläche in der Benachrichtigung angetippt hat, um die App zu öffnen. Der Hintergrund des Hintergrundmodus remote-notification ist jedoch, dass er jedes Mal, wenn eine Remote-Benachrichtigung empfangen wird, application:didReceiveRemoteNotification:fetchCompletionHandler: im Hintergrund aufrufen kann, bevor der Benutzer etwas dagegen unternimmt.

Also, wie können wir jetzt sagen, wenn der Benutzer die App über die Aktionstaste auf der Benachrichtigung öffnet?

Antwort

6

Sie prüfen nach wie vor den Anwendungsstatus in application:didReceiveRemoteNotification:fetchCompletionHandler:

  • UIApplicationStateBackground - App im Hintergrund empfängt eine Push-Benachrichtigung
  • UIApplicationStateInactive - App wird von dem Benutzer öffnen
+0

UIApplicationStateInactive könnte auch passieren, wenn: - Die Push ankommen und die App ändert sich zu anderen, ich meine mit der Multitask-Ansicht geöffnet. - Die App läuft im Vordergrund, aber das Benachrichtigungscenter ist geöffnet. – Jesuslg123

0

ich eine Benachrichtigung tippen Verwenden Sie diese Delegatfunktion, um die 「Benachrichtigungsnummer」 hinzuzufügen.

Ursache unser Server nicht das Abzeichen an unsere Kunden senden. Dann habe ich die seltsame Methode verwendet, um die 「Notification Number」 mit dieser Delegat-Funktion hinzuzufügen, und ich füge auch einen Code, um UIViewController in dieser Funktion zu wechseln.

Ich fand heraus, wenn ich den Server Push Benachrichtigung zu meiner Test App verwende, und der Status der Test App ist im Hintergrund, auch ich benutze Twitter oder Safari.

Meine Test-App auch UIViewController zu einem anderen UIViewController wechseln, nachdem ich Benachrichtigung vom Server drücken.