ios - userNotificationCenter 中的 completionHandler 实际上做了什么?

标签 ios apple-push-notifications unusernotificationcenter

我目前正在实现推送通知,我想知道 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 中的 completionHandler 究竟做了什么?

Apple 的文档说:

The block to execute when you have finished processing the user’s response. You must execute this block at some point after processing the user's response to let the system know that you are done. The block has no return value or parameters.

但这非常含糊,实际上并没有回答我的问题。它会因为我“完成处理 Action ”而终止应用程序吗?它不会杀死应用程序吗?如果我有一些异步调用(比如回复消息)并且我调用了 completionHandler 怎么办?目前它似乎可以正常工作,但如果连接速度很慢怎么办?

最佳答案

如果您的应用程序在收到推送通知时处于后台,则调用处理程序向 iOS 表明您的应用程序不再需要分配 CPU 周期进行处理,直到您收到另一个推送通知或用户与您的应用程序交互某种方式。

如果您的应用处于前台并处于事件状态,则它应该没有任何影响。

无论如何,你都应该是一个“iOS 好公民”,并且在收到推送通知时只做最少的事情。请注意,如果您需要,可以使用一些后台下载服务,您可以在收到推送通知时触发。

正如文字所说,您必须调用此完成处理程序。

关于ios - userNotificationCenter 中的 completionHandler 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56394371/

相关文章:

objective-c - GameKit:谁是大师?

ios - 面向 Apple 和 Android 的 Azure 通知中心

android - 每当在 Flutter 中输入错误时,如何更改 TextField 下面线条的颜色?

ios - iPhone:检测自上次屏幕触摸以来的用户不活动/空闲时间

ios - GCDAsyncUDPSocket源地址返回null

macos - 无法在 Mac 上注册 Apple 推送通知服务

iphone - 通过推送通知发送超过 256 字节的数据

ios - 在我点击我的通知操作后,我的 URL 没有运行。我该怎么办?

ios - Swift:单击推送通知操作按钮时在文本字段中写入并处理它

xamarin.ios - 当应用程序在 Xamarin iOS 中处于后台时不显示本地通知