在后台模式下更新位置仅需10分钟

时间:2015-09-16 15:14:17

标签: ios objective-c

我正在开发一款iPhone应用程序,即使应用程序处于后台,也需要不断更新位置。

我的工作是:

  1. 设置位置更新的后台模式
  2. set desiredAccuracy = kCLLocationAccuracyBestForNavigation
  3. implement - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
  4. 调用[locationManager startUpdatingLocation]
  5. 当应用程序进入后台时,它将继续更新大约10分钟的位置。然后,更新停止。

    有人知道为什么吗? 如何在后台进行长时间的位置更新?

    谢谢!

2 个答案:

答案 0 :(得分:4)

来自Apple文档

  

您可以从Xcode项目的“功能”选项卡的“背景模式”部分启用位置支持。 (您还可以通过在应用程序的Info.plist文件中包含UIBackgroundModes键和位置值来启用此支持。)启用此模式不会阻止系统挂起应用程序,但它确实告诉系统它应该唤醒应用程序,只要有新的位置数据要传递。因此,此密钥可以有效地让应用程序在后台运行,以便在它们发生时处理位置更新。

似乎设置背景模式应该足够了。我让这个在我正在处理的应用程序中工作,我看到的唯一区别是我将pausesLocationUpdatesAutomatically设置为NO

答案 1 :(得分:0)

要在我的QT应用程序进入后台时解决此问题,我将停止UpdatingLocation,将精度从“最佳”降低到kCLLocationAccuracyNearestTenMeters并将距离过滤器的范围从“无”设置为50米,然后启动“ UpUpdatingLocation”。

如果需要更多的粒度位置数据,可以尝试使用较低的过滤器。