2016-11-17 4 views
2

Wie reagiert man auf die lokale Benachrichtigung, wenn die App vollständig geschlossen ist (nicht im Hintergrund)?Wie reagiert man auf lokale Benachrichtigungen, wenn die App in iOS10 geschlossen wird?

Wenn die App im Hintergrund oder Vordergrund läuft, funktioniert alles gut. Aber wenn die App geschlossen ist und ich versuche, auf eine Mitteilung zu beantworten, nur "application didFinishLaunchingWithOptions" wird aufgerufen, "userNotificationCenter didRecive response "antwortet nicht.

ich diese Frage gefunden (How to handle UNNotificationAction when app is closed?), aber in meinem Fall ist es nicht funktioniert weder bei einem realen Gerät noch in einem Simulator.

ich habe auch bemerkt, dass die Funktion "UNUserNotificationCenter.current().getDeliveredNotifications()" kehrt nil, wenn ich auf eine Meldung reagiert habe, während App geschlossen ist.

+0

Welchen Code haben Sie jetzt und wie richten Sie Ihre Benachrichtigungen ein? – Scriptable

+0

Setzen Sie den 'UNNotificationCenter' Delegaten in' didFinishLaunchingWithOptions' oder 'willFinishLaunchingWithOptions'? – Paulw11

+0

Wenn ich verstehe, müssen Sie überprüfen launchOptions Wörterbuch in "applicationdidFinishLaunchingWithOptions" -Methode für Schlüssel @ "UIApplicationLaunchOptionsLocalNotificationKey" und wenn Erfolg behandeln Sie u Benachrichtigung – user3820674

Antwort

3

Für iOS 9 und untere in application(_:didFinishLaunchingWithOptions:) würden Sie Überprüfen Sie, ob launchOptionsenthält. Wenn dies der Fall wäre, wüssten Sie, dass die App aufgrund der lokalen Benachrichtigung gerade erst neu gestartet wurde (d. H. Der Benutzer hat auf die Benachrichtigung geklickt).

Für iOS 10+ Sie müssen Ihre UNUserNotificationCenterDelegate in application(_:willFinishLaunchingWithOptions:) oder application(_:didFinishLaunchingWithOptions:) registrieren.

Ihre Delegierten Funktion:

func userNotificationCenter(_ center: UNUserNotificationCenter, 
          didReceive response: UNNotificationResponse, 
          withCompletionHandler completionHandler: @escaping() -> Void) 

wird aufgerufen, wenn Ihre Anwendung frisch gestartet oder es wurde nur im Hintergrund sitzt. Der Vorteil dieser neuen API besteht darin, dass nur eine Stelle für lokale Benachrichtigungsaktionen zur Verfügung steht.

Verwandte Themen