ios - userNotificationCenter 中的completionHandler 实际上是做什么的?
问题描述
我目前正在实施推送通知,我想知道,completionHandler
实际userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
做了什么?
苹果的文档说:
处理完用户响应后要执行的块。您必须在处理用户响应后的某个时间点执行此块,让系统知道您已完成。该块没有返回值或参数。
但这非常神秘,实际上并没有回答我的问题。它会因为我“完成处理操作”而终止应用程序吗?它不会杀死应用程序吗?如果我有一些异步调用(比如回复消息)并且我调用了 completionHandler 怎么办?现在它似乎正在工作,但如果连接速度很慢怎么办?
解决方案
如果您的应用程序在收到推送通知时处于后台,则调用处理程序向 iOS 表示您的应用程序不再需要分配 CPU 周期进行处理,直到您收到另一个推送通知或用户以某种方式与您的应用程序交互。
如果您的应用程序处于前台且处于活动状态,则它应该无效。
在任何情况下,你都应该是一个“优秀的 iOS 公民”,并且只在收到推送通知时做严格的最低要求。请注意,如果您需要,可以使用一些后台下载服务,您可以在收到推送通知时触发。
正如文中所说,您必须调用此完成处理程序。
推荐阅读
- visual-studio-code - VS Code 中的外部终端作为 Ubuntu 上的新终端选项卡?
- node.js - Middy Node js + Serverless + AWS lambda:如何将单个处理程序用于多个端点?
- python - 在我的程序中使用 pyttsx3 时出现错误
- swift4 - 无法从服务器下载 PKpass
- flask - 我可以限制到 Flask 中特定端点的并发连接数吗
- javascript - 初始化后显示 [object Object] 的价格滑块
- javascript - 从 VueJS 组件中的另一个文件调用 JS 函数
- laravel - 查询函数在laravel中返回结果
- angular - 我正在从 8 到 9 进行角度迁移,碰巧我有这个错误 TS2339: Property 'get' does not exist on type 'unknown'
- javascript - 在 Navigation React Native 中传递值