iOS:背景GPS单独停止?

时间:2013-05-31 20:01:30

标签: ios

我有一个应用程序调用{​​{1}}并且从不调用[locationManager startUpdatingLocation],因为GPS意味着在后台运行。

我已将[locationManager stopUpdatingLocation]文件设置为允许该应用注册后台位置更新。但我偶尔注意到(当应用程序在后台时),屏幕右上角的小箭头表示GPS已打开,自动关闭。

这有什么理由会发生吗?

我只使用info.plist方法拨打[locationManager startUpdatingLocation]一次。我是否也应该在applicationDidBecomeActive方法中调用它?

2 个答案:

答案 0 :(得分:6)

来自apple docs:

  

允许位置管理器暂停更新可以改善电池电量   在不牺牲位置数据的情况下在目标设备上生存。当这个   property设置为YES,位置管理器暂停更新(和   在位置数据时有时关闭适当的硬件   不太可能改变。例如,如果用户停下来吃饭的话   使用导航应用程序,位置管理器可能暂停a的更新   一段的时间。您可以帮助确定何时暂停   通过为activityType属性赋值来更新位置。

iOS 6有关核心位置的变化。您需要禁用AutoPause。将pausesLocationUpdatesAutomatically更改为NO。即使应用程序在后台运行,也会发送位置更新,就像以前在< iOS 6。

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

答案 1 :(得分:1)

更新:您可以在后台使用标准更新。根据Apple的说法:

  

如果您的应用需要提供位置更新,无论应用是在前台还是后台,都有多种选择。首选方案是使用重要位置更改服务在适当的时间唤醒您的应用以处理新事件。但是,如果您的应用需要使用标准位置服务,则可以将您的应用声明为需要后台位置服务。

     

仅当缺少这些服务会影响其运营能力时,应用才应申请后台位置服务。此外,任何请求后台位置服务的应用程序都应使用这些服务为用户提供切实的好处。例如,逐向导航应用程序可能是后台位置服务的候选者,因为它需要跟踪用户的位置并在下次转弯时报告。

请看一下这个链接:http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4


在后台运行的应用通常会使用[locationManager startMonitoringSignificantLocationChanges];而不是标准[locationManager startUpdatingLocation];

Apple对此主题有一些严格的指导方针。如果你还没有,你应该在这里阅读:

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW1

由于您在后台使用标准位置更新而非重要位置更改,因此您的位置更新可能会停止。