2016-11-17 60 views
2

如何在應用程序完全關閉時(不在後臺)響應本地通知?如何在iOS10關閉應用程序時響應本地通知?

當應用程序在後臺或前臺運行時,一切正常。但是,當應用程序被關閉,我試圖回答通知,只有"application didFinishLaunchingWithOptions"被調用,"userNotificationCenter didRecive response「無應答。

我發現這個問題(How to handle UNNotificationAction when app is closed?),但在我的情況下,它不工作也不在一個真正的設備,也沒有在模擬器。

我還注意到,該函數返回"UNUserNotificationCenter.current().getDeliveredNotifications()"nil我回答通知,而應用程序被關閉。

+0

你現在有什麼代碼,你如何設置你的通知? – Scriptable

+0

你是在'didFinishLaunchingWithOptions'還是'willFinishLaunchingWithOptions'中設置UNNotificationCenter委託? – Paulw11

+0

如果我理解正確的ü必須檢查launchOptions辭典「applicationdidFinishLaunchingWithOptions」方法爲重點@「UIApplicationLaunchOptionsLocalNotificationKey」,如果成功手柄ü通知 – user3820674

回答

3

對於的iOS 9,下application(_:didFinishLaunchingWithOptions:)你會檢查launchOptions是否包含localNotification: UIApplicationLaunchOptionsKey。如果是這樣,你會知道應用程序剛剛由於本地通知而啓動(即用戶點擊了通知)。

對於的iOS 10+必須註冊UNUserNotificationCenterDelegateapplication(_:willFinishLaunchingWithOptions:)application(_:didFinishLaunchingWithOptions:)

你委託的功能:

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

將您的應用是否新鮮啓動或調用它只是坐在後臺。 這個新API的優點是隻有一個地方可以處理本地通知操作。