0

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

  1. 使用标准 [CLLocationManager startUpdatingLocation] 检索用户的当前位置
  2. 在 locationManager:didUpdateLocations: 上,使用 startMonitoringForRegion 在当前位置创建地理围栏,并在后续位置更新时,重新定位该区域
  3. 在通常从后台调用以唤醒应用程序的 locationManager:didExitRegion: 上,调用 [CLLocationManager startUpdatingLocation] 以检索用户的当前位置以重新定位地理围栏(以不是当前区域中心坐标的下一个更新位置为中心) .

有时这一切都有效,但通常情况下,地理围栏无法正确重新定位。正在发生的事情是该区域重新居中并立即调用 locationManager:didExitRegion: ,这使其进入无限循环,直到应用程序再次终止。由于它在没有有效监控区域的情况下终止,因此应用程序不会被唤醒以进行位置更新。

这是对区域监控的错误使用吗?我正在尝试以不同的方式以电池高效的方式跟踪用户位置(而不是经常使用标准的 startUpdatingLocation)。标志位置变化跟踪和访问监控相结合会更有效吗?

谢谢!

4

0 回答 0