我有一个使用标准位置(而不是重大变化)服务的iPhone应用程序。我知道电池等问题,但我们需要持续的准确性。
一般工作正常。我们在plist文件中设置了位置背景模式等。
但是,重启设备时,应用似乎没有重新启动。
搜索周围,我看到了一些奇怪的评论,表明虽然注册重要更新的应用将在重新启动时重新启动(当收到更新时),使用的应用标准的位置服务可能不是。
但是,我找不到任何明确说明这一点的Apple文档(甚至是明确的,当前的第三方声明)。有没有人对此有明确的答案?
如果标准位置更新在重新启动后没有重新启动应用,是否有解决方法 - 例如使用意义更新来引导标准更新?有人有例子吗?
我见过有人建议您注册VoIP,但我不想这样做,因为它不使用这些服务。
答案 0 :(得分:1)
注册重要位置更新的应用不会在系统重启时重新启动。但是,如果新的位置更新通过并且系统先前已终止它们,则执行会重新启动。这实际上意味着,如果您的应用程序被后台处理并由系统终止(以节省内存等),它将在后台重新启动。
引用Apple的文档:
这与<{1}} VOIP密钥不同, 导致应用在系统重启后重新启动。
Apple的应用程序编程指南中记录了这一点,背景执行&#39;背景执行&#39;部分(link here)。这是一个相当冗长的文档,所以这里有两个你想要的位:
在UIBackgroundModes键中包含voip值可让系统知道它应该允许应用程序在后台运行以管理其网络套接字。具有此密钥的应用程序也会在系统启动后立即在后台重新启动,以确保VoIP服务始终可用。
对于位置:
[UIBackgroundMode位置键]并不排除系统暂停应用程序,但它确实告诉系统,只要有新的位置数据要提供,它就应该唤醒应用程序