我正在实现一个应用程序,在该应用程序中我需要通过以下方式跟踪用户的位置:

  • 在应用程序处于后台或关闭状态时跟踪用户的位置
  • 如果用户的位置更改了大约2000米,我应该执行API调用。

  • 我对这个问题的处理方法如下:
  • 用户首次启动应用程序时,我开始使用其当前位置来监视区域
  • 如果 didExitRegion 被触发,我将执行API调用,并使用当前位置作为新区域的中心,用新区域替换当前监视的区域。

  • 当应用程序位于前台时,这可以很好地工作,因为位置管理器返回的位置是准确的。

    但是,如果应用程序在后台运行,则位置管理器将不会返回准确的位置,因为它是首次运行,并且返回的第一个坐标不准确。

    问题是,当在后台触发 didExitRegion 时,如何获取用户的准确位置?

    谢谢

    最佳答案

    可靠地启动didExitRegion:并没有带来太多运气;它经常向远比我所在地区边缘射击的地方开火。

    如果您仅需要每2公里左右的API调用,我建议您使用CLLocationManager -startMonitoringSignificantLocationChanges 。如果您的准确性/精度很重要,只需将定位服务注册为必要的后台状态(在应用程序plist中为 UIBackgroundModes ;您可能还需要这样做,以使用来自后台的重要更改API),并使用常规的-startUpdatingLocationdistanceFilter实例上适当的 desiredAccuracy CLLocationManager 字段值。

    关于iphone - 从didExitRegion获取准确的坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12940579/

    10-10 18:00
    查看更多