从 userNotificationCenter 检索通知类型:didReceiveNotificationResponse:withCompletionHandler:

Posted

技术标签:

【中文标题】从 userNotificationCenter 检索通知类型:didReceiveNotificationResponse:withCompletionHandler:【英文标题】:Retrieve notification type from userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 【发布时间】:2017-07-14 15:32:17 【问题描述】:

有什么方法可以检索userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 触发的通知类型(localremote)?

我正在为我的应用开发某种内部分析模块。在每个应用程序中,我需要从通知 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

为啥 userNotificationCenter didReceive 没有被解雇?

iOS 13 中的本地通知 didReceive