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

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

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

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

    谢谢!

    链接地址: http://www.djcxy.com/p/20351.html

    上一篇: How to reset region center when exited region in background using CoreLocation

    下一篇: CLLocationManager SignificantLocationChanges Force Refresh