首页 > 解决方案 > userNotificationCenter 中的completionHandler 实际上是做什么的?

问题描述

我目前正在实施推送通知,我想知道,completionHandler实际userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:做了什么?

苹果的文档说:

处理完用户响应后要执行的块。您必须在处理用户响应后的某个时间点执行此块,让系统知道您已完成。该块没有返回值或参数。

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

标签: iosapple-push-notificationsunusernotificationcenter

解决方案


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

如果您的应用程序处于前台且处于活动状态,则它应该无效。

在任何情况下,你都应该是一个“优秀的 iOS 公民”,并且只在收到推送通知时做严格的最低要求。请注意,如果您需要,可以使用一些后台下载服务,您可以在收到推送通知时触发。

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


推荐阅读