我在iOS 10中使用了新的UNUserNotification
框架。我可以看到如何添加操作按钮,但是当用户点击通知本身时如何响应?就我而言,它将是带有一些文字的图像。
默认行为是应用程序打开。
我是否可以使用自定义代码检测我的应用程序是否因UNUserNotification
点击而被打开,理想情况下是否有关于通知的标识符信息?
如果我的应用在后台运行或已关闭,这些会有效吗? UNUserNotification
文档建议设置UNUserNotificationCenter
的委托,但我认为只有在应用正在运行时才有效。
答案 0 :(得分:5)
如果您尚未将AppDelegate
设置为UNUserNotificationCenterDelegate
,请将以下内容添加到didReceive
方法中:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = ["identifier":response.notification.request.identifier]
NotificationCenter.default.post(name: Notification.Name(rawValue: "userNotificationCenterDidReceiveResponse"), object: self, userInfo: userInfo)
completionHandler()
}
然后您可以注册" userNotificationCenterDidReceiveResponse"通知并使用标识符做任何你喜欢的事情。无论您的应用处于什么状态,包括不运行,都可以使用。
如果这还不够清楚,我可以上传示例项目。
答案 1 :(得分:2)
使用UNUserNotificationCenter Delegates
。
当app位于前台时使用此功能:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
从notification
这是应用程序在后台的时候:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
从response
获取要使用的值。
希望这会有所帮助。