如果应用程序完全关闭(不在后台),如何响应本地通知?
当应用程序在后台或前台运行时,一切正常。但是当应用关闭并且我尝试回复通知时,只会调用"application didFinishLaunchingWithOptions"
,"userNotificationCenter didRecive response
"没有回答。
我发现了这个问题(How to handle UNNotificationAction when app is closed?),但就我而言,它既不适用于真实设备也不适用于模拟器。
我还注意到,当应用关闭时,我在回复通知时,"UNUserNotificationCenter.current().getDeliveredNotifications()"
函数会返回nil
。
答案 0 :(得分:4)
对于application(_:didFinishLaunchingWithOptions:)
中的 iOS 9及更低版,您需要检查launchOptions
是否包含localNotification: UIApplicationLaunchOptionsKey
。如果是这样,您会知道应用程序刚刚因本地通知而刚刚启动(即用户点击了通知)。
对于 iOS 10 + ,您必须在UNUserNotificationCenterDelegate
或application(_:willFinishLaunchingWithOptions:)
中注册application(_:didFinishLaunchingWithOptions:)
。
你的代表职能:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void)
如果您的应用刚刚启动或者只是坐在后台,则会调用。 这个新API的优点是只有一个地方可以处理本地通知操作。