userNotificationCenter 中的 completionHandler 实际上做了什么?
What does completionHandler in userNotificationCenter actually do?
我目前正在实施推送通知,我想知道 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.
但这非常含糊,实际上并没有回答我的问题。它会因为我 "finished handling the action" 而终止应用程序吗?它不会终止应用程序吗?如果我有一些异步调用(比如回复消息)并且我调用了 completionHandler 怎么办?目前它似乎可以正常工作,但如果连接速度慢怎么办?
如果您的应用程序在收到推送通知时处于后台,则调用处理程序表示 iOS 您的应用程序不再需要分配 CPU 个处理周期,直到您收到另一个推送通知或用户以某种方式与您的应用交互。
如果您的应用处于前台并处于活动状态,则它应该没有任何影响。
在任何情况下,您都应该是 "good iOS citizen" 并且在收到推送通知时只做最少的事情。请注意,如果您需要,可以使用一些后台下载服务,您可以在收到推送通知时触发。
正如文字所说,您必须调用此完成处理程序。
我目前正在实施推送通知,我想知道 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.
但这非常含糊,实际上并没有回答我的问题。它会因为我 "finished handling the action" 而终止应用程序吗?它不会终止应用程序吗?如果我有一些异步调用(比如回复消息)并且我调用了 completionHandler 怎么办?目前它似乎可以正常工作,但如果连接速度慢怎么办?
如果您的应用程序在收到推送通知时处于后台,则调用处理程序表示 iOS 您的应用程序不再需要分配 CPU 个处理周期,直到您收到另一个推送通知或用户以某种方式与您的应用交互。
如果您的应用处于前台并处于活动状态,则它应该没有任何影响。
在任何情况下,您都应该是 "good iOS citizen" 并且在收到推送通知时只做最少的事情。请注意,如果您需要,可以使用一些后台下载服务,您可以在收到推送通知时触发。
正如文字所说,您必须调用此完成处理程序。