我有一个应用程序,它使用startMonitoringForRegion:
和的组合startMonitoringSignificantLocationChanges
来了解应用程序在后台时用户的位置。这是否意味着我需要在 ? 中包含键的location
值?UIBackgroundModes
Info.plist
这是来自文档的引用:
对于不需要高精度位置数据的应用,强烈建议使用重大变化位置服务。使用此服务,仅当用户的位置发生重大变化时才会生成位置更新;因此,它非常适合社交应用程序或为用户提供非关键、位置相关信息的应用程序。如果应用程序在发生更新时被挂起,系统会在后台将其唤醒以处理更新。如果应用程序启动此服务然后终止,系统会在新位置可用时自动重新启动应用程序。此服务在 iOS 4 及更高版本中可用,并且仅在包含蜂窝无线电的设备上可用。
...
为用户提供持续位置更新(即使在后台)的应用程序可以通过在其 Info.plist 文件中包含 UIBackgroundModes 键(带有位置值)来启用后台位置服务。在 UIBackgroundModes 键中包含此值不会阻止系统挂起应用程序,但它确实告诉系统它应该在有新的位置数据要传递时唤醒应用程序。因此,此键有效地让应用程序在后台运行,以便在位置更新发生时处理它们。
我对此的解释是,仅当应用程序需要持续位置更新时才需要密钥的location
值,例如卫星导航应用程序。UIBackgroundModes
我还尝试在没有密钥location
值的设备上运行该应用程序UIBackgroundModes
,它会继续报告重大的位置更改以及何时输入或退出区域。
此外, CLLocationManager 类参考UIBackgroundModes
中提到的唯一地方是在讨论中,我没有使用。startUpdatingLocation