选择通知操作时不会调用 userNotificationCenter(_:didReceive:withCompletionHandler:)

Posted

技术标签:

【中文标题】选择通知操作时不会调用 userNotificationCenter(_:didReceive:withCompletionHandler:)【英文标题】:userNotificationCenter(_:didReceive:withCompletionHandler:) not be called when a notification action is selected 【发布时间】:2018-02-14 23:16:52 【问题描述】:

我正在尝试使可操作的通知正常工作,并且我已经获得了在通知展开时要显示的操作,但是当我选择一个操作时我无法调用委托函数。 I am declaring self.notificationCenter.delegate = self in application(_:didFinishLaunchingWithOptions:), and, if I'm understanding correctly, when an action is selected it should call userNotificationCenter(_:didReceive:withCompletionHandler:), passing in the UNNotificationResponse object.但是该方法永远不会在我的代码中被触发。任何想法为什么会发生这种情况?

【问题讨论】:

你创建了一个动作吗?如果是这样,您将需要首先检查操作标识符。检查this一个 @Mannopson 这最终不是问题,但我会调查一下,看看它是否仍然需要处理。谢谢。 【参考方案1】:

你上面提到的方法一收到通知就会被调用。

点击通知动作后执行的方法是, 应用程序:handleActionWithIdentifier:forRemoteNotification:completionHandler:

【讨论】:

该方法已被弃用。根据 Apple 编程指南,userNotificationCenter(_:didReceive:withCompletionHandler:) 是选择操作时调用的委托方法。 我贴的方法是新的。您可以查看此链接“developer.apple.com/documentation/uikit/uiapplicationdelegate/…”【参考方案2】:

我发现了这个问题。要处理带有内容的通知,您必须在项目中添加服务扩展作为新目标。我运行的最后一件事是服务扩展,因此调试器不会在主应用程序的断点处停止。我不知道服务扩展本质上被视为完全独立的应用程序。由于我仍在处理该方法的内容,因此其中的内容无法正常工作并且会遇到断点,因此我认为它没有像应有的那样调用该函数。

【讨论】:

以上是关于选择通知操作时不会调用 userNotificationCenter(_:didReceive:withCompletionHandler:)的主要内容,如果未能解决你的问题,请参考以下文章

通知操作按钮不会停止闹钟铃声

手机操作系统中显示的 Bluemix 推送通知在单击时不会启动应用程序

当应用程序在 iOS 10 的前台时,不会调用“willPresent 通知”并且本地通知不会显示

将 BroadcastReceiver 用于推送通知时不会被调用

为啥挂起的意图在从服务的通知中调用时不会启动活动

当应用程序在后台时,不会在 iOS 中调用 WL 推送通知回调