2

我有一个使用标准位置(而不是重大变化)服务的 iPhone 应用程序。我知道电池等问题,但我们需要持续的准确性。

它通常工作正常。我们在 plist 文件等中设置了位置背景模式。

但是,当设备重新启动时,该应用程序似乎没有重新启动。

环顾四周,我看到奇怪的评论表明,虽然注册重要更新的应用程序将在重新启动时重新启动(当收到更新时),但使用标准位置服务的应用程序可能不会。

但是,我找不到任何明确说明这一点的 Apple 文档(甚至找不到明确的、当前的第三方声明)。有人对此有明确的答案吗?

如果标准位置更新在重新启动后没有重新启动应用程序,是否有解决方法 - 例如使用符号更新来引导标准更新?有人有例子吗?

我看到有人建议您可以注册 VoIP,但我不想这样做,因为它不使用这些服务。

4

1 回答 1

1

注册重要位置更新的应用程序不会在系统重新启动时重新启动。但是,如果新的位置更新通过并且系统之前已终止它们,它们会重新启动。这实际上意味着如果您的应用程序在后台运行并被系统终止(以节省内存等),它将在后台重新启动。

引用 Apple 的文档:

这与VOIP 密钥不同,后者确实会导致应用程序在系统重新启动后重新启动。UIBackgroundMode

这记录在 Apple 的 App Programming Guide 中的“Background Execution”部分(此处链接)。这是一个相当冗长的文档,所以这里有两个你想要的:

在 UIBackgroundModes 键中包含 voip 值可以让系统知道它应该允许应用程序根据需要在后台运行以管理其网络套接字。具有此密钥的应用程序也会在系统启动后立即在后台重新启动,以确保 VoIP 服务始终可用。

对于位置:

[UIBackgroundMode 位置键] 不会阻止系统挂起应用程序,但它确实告诉系统它应该在有新的位置数据交付时唤醒应用程序

于 2013-01-01T12:53:20.220 回答