从 userNotificationCenter 检索通知类型:didReceiveNotificationResponse:withCompletionHandler:
Posted
技术标签:
【中文标题】从 userNotificationCenter 检索通知类型:didReceiveNotificationResponse:withCompletionHandler:【英文标题】:Retrieve notification type from userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 【发布时间】:2017-07-14 15:32:17 【问题描述】:有什么方法可以检索userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
触发的通知类型(local
或remote
)?
我正在为我的应用开发某种内部分析模块。在每个应用程序中,我需要从通知 userInfo 和通知类型(本地或远程)向我们的分析服务器发送特定信息。
要获取userInfo
,我使用以下代码:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
NSDictionary *userInfo = response.notification.request.content.userInfo;
//app-specific logic goes here
当然,在安排本地通知时,我可以将特定参数(到每个应用程序)添加到 userInfo
以检索通知类型。但可能存在更清晰的方式来做我想做的事。
【问题讨论】:
【参考方案1】:最后,我只是检查userInfo
以获取远程推送通知有效负载中必需的特定键(例如“aps”)。就我的目的而言,这就足够了。有关远程通知负载的更多信息:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html
【讨论】:
另一种选择是使用response.notification.request.trigger
来确定通知类型。无触发器 == 本地,UNPushNotificationTrigger == 远程。
或者更确切地说 UNPushNotificationTrigger == 远程,任何其他触发器 == 本地。以上是关于从 userNotificationCenter 检索通知类型:didReceiveNotificationResponse:withCompletionHandler:的主要内容,如果未能解决你的问题,请参考以下文章
userNotificationCenter didReceive 响应包含空通知(watchOS)
选择通知操作时不会调用 userNotificationCenter(_:didReceive:withCompletionHandler:)
iOS 将通知对象发送到 UserNotificationCenter 和 didFinishLaunchingWithOptions
通知不会触发 macOS Big Sur 11.6 上的 userNotificationCenter