我的问题是:CLLocationManager是否继续运行,而我的应用程序处于非活动状态?
答案 0 :(得分:9)
是的,如果首先调用CLLocationManager
startUpdatingLocation
方法,并在AppName-Info.plist
文件中添加Required Background Modes -> App registers for location updates
答案 1 :(得分:2)
是的,它可以。当您的应用暂停时,您有两种处理位置服务事件的选项,可以在以下文章中阅读:Getting the User’s Current Location。 如上所述:
您可以使用两种不同的服务来获取用户的当前位置:
- 标准位置服务是一种可配置的通用解决方案,并且在所有版本的iOS中均受支持。
- 重要变更位置服务为具有蜂窝无线电的设备提供低功率定位服务。此服务仅在iOS 4.0及更高版本中可用,并且还可以唤醒暂停或未运行的应用程序。
此外,如本文底部“在后台获取位置事件”部分所述:
- 如果您的应用程序需要提供位置更新,无论应用程序是在前台还是后台,都有多种方法可以执行此操作。首选方案是使用重要位置更改服务在适当的时间唤醒您的应用程序以处理新事件。但是,如果您的应用程序需要使用标准位置服务,则可以将您的应用程序声明为需要后台位置服务。
- 只有在缺少这些服务会影响其运营能力的情况下,申请才应申请后台服务。此外,任何请求后台位置服务的应用程序都应使用这些服务为用户提供切实的好处。例如,逐向导航应用程序可能是后台位置服务的候选者,因为它需要跟踪用户的位置并在下一次转弯时报告。
答案 2 :(得分:2)
这有一些重要的细微之处(从iOS 7.1开始):
希望有所帮助!
答案 3 :(得分:1)
要在应用处于后台模式时禁用CLLocationManager,您只需添加即可 “应用程序注册位置更新” 在里面 “所需的背景模式” info.plist文件的密钥。
我建议尽可能使用重要更改位置服务而不是标准位置服务,以保留设备电池。