使用*标准*定位服务的后台 iOS 应用程序是不是会在设备重新启动时重新启动?
Posted
技术标签:
【中文标题】使用*标准*定位服务的后台 iOS 应用程序是不是会在设备重新启动时重新启动?【英文标题】:Are background iOS apps that use the *standard* location services restarted on device reboot?使用*标准*定位服务的后台 iOS 应用程序是否会在设备重新启动时重新启动? 【发布时间】:2013-01-01 12:33:28 【问题描述】:我有一个使用标准位置(相对于重大更改)服务的 iPhone 应用。我知道电池等问题,但我们需要持续的准确性。
它通常工作正常。我们在plist文件等中设置了位置背景模式。
但是,当设备重新启动时,该应用似乎没有重新启动。
四处搜索,我看到奇怪的评论表明,虽然注册了重大更新的应用程序将在重新启动时重新启动(当收到更新时),但使用 可能不是标准的定位服务。
但是,我找不到任何明确说明这一点的 Apple 文档(甚至找不到明确的、最新的第三方声明)。有人对此有明确的答案吗?
如果 标准 位置更新在重新启动后没有重新启动应用程序,是否有解决方法 - 例如使用含义更新来引导标准更新?有人举个例子吗?
我看到有人建议您可以注册 VoIP,但我不想这样做,因为它不使用这些服务。
【问题讨论】:
【参考方案1】:注册重要位置更新的应用程序不会在系统重新启动时重新启动。但是,如果新的位置更新通过并且系统之前已终止它们,它们确实会重新启动。这实际上意味着如果您的应用程序在后台运行并被系统终止(以节省内存等),它将在后台重新启动。
引用 Apple 的文档:
这与UIBackgroundMode
VOIP 密钥不同,后者确实会导致应用程序在系统重启后重新启动。
这在 Apple 的应用程序编程指南中的“后台执行”部分 (link here) 中有记录。这是一个相当冗长的文档,所以这里有你想要的两点:
在 UIBackgroundModes 键中包含 voip 值可以让系统知道它应该允许应用根据需要在后台运行以管理其网络套接字。具有此密钥的应用程序也会在系统启动后立即在后台重新启动,以确保 VoIP 服务始终可用。
对于位置:
[UIBackgroundMode 位置键] 不会阻止系统暂停应用程序,但它会告诉系统它应该在有新的位置数据要传递时唤醒应用程序
【讨论】:
因此,当使用标准位置服务时,应用程序也会重新启动 - 而不是重要位置服务,当新的位置更新到来时?跨度> 它可以做到,但前提是您明确提供正确的UIBackgroundMode
密钥。这是为了让需要细粒度定位的应用(主要是导航应用)在后台成功运行。以上是关于使用*标准*定位服务的后台 iOS 应用程序是不是会在设备重新启动时重新启动?的主要内容,如果未能解决你的问题,请参考以下文章