我有4个场景
当应用未启动时
鉴于应用程序未启动或被杀死 推送通知收到时 并且在不点击通知的情况下打开了应用程序 然后应用程序应捕获通知。
应用程序在前台运行时
鉴于应用程序在前台运行
推送通知收到时
然后应用程序应捕获通知。
当应用在后台运行时
鉴于应用程序正在后台运行
推送通知收到时
并且在不点击通知的情况下打开了应用程序
然后应用程序应捕获通知。
当应用未启动并清除通知时
鉴于应用程序未启动或已杀死
推送通知收到时
并且用户清除了通知
并打开应用程序
然后应用程序应捕获通知。
前3个方案适用于以下代码
最后一个方案无效当应用未启动并清除通知时
的AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: { requests in
for request in requests {
self.setNotification(userInfo: request.request.content.userInfo as NSDictionary)
}
})
}
return true
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
setNotification(userInfo: userInfo as NSDictionary)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
setNotification(userInfo: userInfo as NSDictionary)
}