在未运行时通过静默通知启动 iOS 应用程序
Posted
技术标签:
【中文标题】在未运行时通过静默通知启动 iOS 应用程序【英文标题】:Launching iOS app when it's not running via silent notifications 【发布时间】:2017-03-26 21:17:13 【问题描述】:根据Apple's official documentation,如果有人发送“静默通知”,即带有content-available: 1
的通知,我们有
对于后台下载应用程序:应用程序的推送通知到达 并且通知的有效负载包含内容可用密钥 值为 1。系统在机会主义时刻唤醒应用程序 开始下载新内容。对于下载内容的应用程序 后台使用 NSURLSession 类,所有任务关联 该会话对象要么成功完成,要么收到一个 错误。报亭应用启动的下载完成。
该文件中也有说明
应用程序通常在用户看到通知的大致同一时间被唤醒,但这仍然会给您比其他情况下更多的时间。
如何解释这个?如果在 plist 中使用 UIBackgroundMode
或 remote-notification
提交应用程序,这是否意味着如果我们发送远程通知,该应用程序实际上是在后台启动?即使用户重启了 ios 设备,并且没有启动我们的应用程序?即使用户之前强制退出我们的应用程序?
我的问题是,上述期望有多可靠?有没有人对此有过直接的经验并对此进行了测试,并且在您的经验中 100% 都是正确的?
【问题讨论】:
【参考方案1】:来自苹果
配置静默通知
aps 字典也可以包含 content-available 属性。 值为 1 的 content-available 属性允许远程 通知充当静默通知。当无声通知 到了,iOS 会在后台唤醒你的应用,这样你就可以得到 来自您的服务器的新数据或进行背景信息处理。 用户不会被告知产生的新信息或更改信息 从一个无声的通知,但他们可以在下一个找到它 他们打开您的应用的时间。
对于无声通知,请注意确保没有警报, aps 字典中的声音或徽章有效负载。如果你不关注 在本指南中,错误配置的通知可能是 节流且未在后台传送到应用程序,而是 向用户显示保持沉默的状态
iOS 会唤醒您的应用,并让您在 30 秒内下载所需的任何内容。请记住,通知并不可靠,因此您不能相信它们会 100% 到达。如果您有非常重要的数据要显示,则需要验证您的应用在用户打开它时是否已同步。后台抓取只是为了改善用户体验
【讨论】:
以上是关于在未运行时通过静默通知启动 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
当我收到静默推送通知时,iOS 会唤醒我的应用程序吗?(当应用程序未处于运行状态时)