从didExitRegion获得准确的坐标

Kas*_*sem 5 iphone objective-c cllocationmanager ios5

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

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

我解决这个问题的方法如下:

  • 用户第一次启动应用程序时,我会使用其当前位置开始监控某个区域
  • 如果触发了didExitRegion,我执行API调用并使用当前位置作为新区域的中心,用新区域替换当前监视区域.

当应用程序位于前台时,这可以正常工作,因为从位置管理器返回的位置是准确的.

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

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

谢谢

Ben*_*her 3

我在可靠地射击方面运气不佳didExitRegion:;它通常会比我所在区域的边缘更远的地方开火。

如果您只需要每 2 公里左右调用一次 API,我建议您使用CLLocationManager's 。-startMonitoringSignificantLocationChanges如果您的准确度/精度很重要,只需将位置服务注册为必要的后台状态(UIBackgroundModes在您的应用程序 plist 中;您可能也需要这样做才能使用后台的重大更改 API),并使用正常的-startUpdatingLocation,以及适当的distanceFilterdesiredAccuracy您的实例上的字段值CLLocationManager