Ada*_*den 16 iphone objective-c core-location cllocationmanager ios
我有一个应用程序,它结合使用startMonitoringForRegion:并startMonitoringSignificantLocationChanges在应用程序处于后台时了解用户的位置.这是否意味着我需要location在UIBackgroundModes键中包含键的值Info.plist?
这是文档的引用:
对于不需要高精度位置数据的应用,强烈建议使用重要更改位置服务.使用此服务,仅当用户的位置发生显着变化时才会生成位置更新; 因此,它非常适合为用户提供非关键的,与位置相关的信息的社交应用或应用.如果在更新发生时暂停应用程序,系统会在后台将其唤醒以处理更新.如果应用程序启动此服务然后终止,系统会在新位置可用时自动重新启动应用程序.此服务在iOS 4及更高版本中可用,并且仅在包含蜂窝无线电的设备上可用.
...
为用户提供连续位置更新的应用程序(即使在后台)可以通过在其Info.plist文件中包含UIBackgroundModes键(具有位置值)来启用后台位置服务.在UIBackgroundModes键中包含此值并不妨碍系统暂停应用程序,但它确实告诉系统,只要有新的位置数据要传递,它就应该唤醒应用程序.因此,此密钥有效地允许应用程序在后台运行,以便在发生时处理位置更新.
我对此的解释是,只有当应用程序需要连续的位置更新时才需要密钥的location值UIBackgroundModes,例如sat导航应用程序.
我还尝试在没有密钥location值的设备上运行应用程序,UIBackgroundModes并继续报告重要的位置更改以及何时输入退出的区域.
此外,CLLocationManager类参考中UIBackgroundModes提到的唯一位置是在讨论中,我没有使用.startUpdatingLocation
nev*_*ing 17
你的location关键是正确的,只有当你的应用需要高精度的位置更新时才需要它,即使在后台也是如此.像Runkeeper这样的东西使用它来允许它跟踪你的位置,即使你正在使用多任务的另一个应用程序.来自iOS Keys的文档:UIBackgroundModes
"location":应用程序向用户提供基于位置的信息,并且需要使用标准位置服务(而不是重要的更改位置服务)来实现此功能.
和
如果存在在后台运行的替代方案,则应使用这些替代方案.例如,应用可以使用有意义的位置更改界面来接收位置事件,而不是注册为后台位置应用.
区域监控无需location密钥即可运行.事实上,区域监控将在没有启用任何特殊iOS密钥的情况下工作.
你说你没有使用CLLocationManager,但如果你正在使用区域监控,你将不得不使用该类.您需要为应用设置位置管理器委托,以实际获取区域通知.
| 归档时间: |
|
| 查看次数: |
10212 次 |
| 最近记录: |