如何使用CoreLocation在后台退出区域时重置区域中心

时间:2014-12-02 06:51:38

标签: ios objective-c core-location cllocationmanager region-monitoring

我的想法在理论上很简单,但我很难执行它。我想在用户的位置创建地理围栏,当用户退出该区域时,我想在用户更新的位置重新定位该区域。这是流程:

  1. 使用标准[CLLocationManager startUpdatingLocation]
  2. 检索用户的当前位置
  3. 在locationManager:didUpdateLocations:上,使用startMonitoringForRegion在当前位置创建地理围栏,并在后续位置更新中重新定位该区域
  4. 在locationManager:didExitRegion:上,通常从后台调用以唤醒应用程序,调用[CLLocationManager startUpdatingLocation]以检索用户的当前位置以重新定位地理围栏(以下一个更新的位置为中心,而不是当前区域)中心坐标)。
  5. 有时这一切都有效,但通常情况下,地理围栏无法正确重新定位。发生的事情是该区域重新居中并且立即调用了locationManager:didExitRegion:它将其置于无限循环中,直到应用程序再次终止。由于它在没有有效监控区域的情况下终止,因此该应用程序将不会被唤醒以进行位置更新。

    这是区域监控的错误用法吗?我正试图以电池效率的方式使用不同的方式跟踪用户位置(而不是经常使用标准的startUpdatingLocation)。意味着位置变更跟踪和访问监控的组合会更有效吗?

    谢谢!

0 个答案:

没有答案