对于iOS 10 本地通知,您不走运。
对于iOS 10 远程通知-<strong>无论用户交互如何,您都可以使用application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. (这有点令人困惑,他们弃用了大多数与通知相关的方法,但不是这个)
当应用程序处于前台并且您即将显示通知时的回调:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let content = notification.request.content
// Process notification content
completionHandler([.alert, .sound]) // Display notification as regular alert and play sound
}
当应用程序处于后台或前台并且用户点击操作时的回调:
例如,给你一个用户点击Save的回调。
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let actionIdentifier = response.actionIdentifier
switch actionIdentifier {
case UNNotificationDismissActionIdentifier: // Notification was dismissed by user
// Do something
completionHandler()
case UNNotificationDefaultActionIdentifier: // App was opened from notification
// Do something
completionHandler()
default:
completionHandler()
}
}
当应用程序处于后台、前台或(可能)挂起状态并且推送通知(远程或静默通知)到达时的回调:
在 iOS10 之前,当您点击通知时,application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
会被调用。
但由于点击application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
时不会调用iOS 10 。它仅在远程通知到达时调用。(它在前台和后台都被调用)
对于iOS 10 之前的版本,您可以只使用旧didReceiveLocalNotification
功能并捕获任何通知的到来。