CLLocationManager更新频率
问题描述:
我已经配置locationManager如下。CLLocationManager更新频率
_locationManager = [[CLLocationManager alloc] init];
[_locationManager setDelegate:self];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[_locationManager setDistanceFilter:kCLDistanceFilterNone];
当应用程序运行时,我从委托方法中得到一些更新。 当我没有改变位置,手机静止2小时左右时,我会在前10分钟内收到10-12次更新,然后停止接收更新。
我的理解是,desired准确是多久设备将继续尝试更多和更准确的方法来获取当前位置。所以在我的情况下,大约需要10分钟才能获得所需的精度。
我想确认这是否属实。即使设备没有移动,我是否也有办法定期更新位置信息?
答
为什么你会期望如果它没有改变的位置更新?
如果要定期刷新结果,请使用自己创建的NSTimer
。
当设备获得一个位置错误< desiredAccuracy的利润,它就会停止要求更精确的结果。如果设备移动,它会再次开始询问,直到它再次获得所需的精度。
如果你指定10米的准确性,那么你几乎肯定会依赖于GPS - 手机塔和wifi并不是那么准确(通常)。
要确定设备是否已移动,它使用距离过滤器 - 通过将其设置为无,您一直要求它始终精确到最接近的10米 - 这可能会在电池上相当耗尽;)
我正在开发一个应用程序,在每小时之后,通知用户其当前位置。如果设备正在移动,这工作正常。但并非如此。我不能使用NSTimer,因为应用程序并不总是处于前台。 – Sahil 2012-01-10 13:41:37
也许背景位置更新和本地通知可以以某种方式组合? – deanWombourne 2012-01-10 13:43:09
并看看这个问题的接受答案:http://stackoverflow.com/questions/6347503/how-do-i-get-a-background-location-update-every-n-minutes-in-my -ios-application - 看起来像他找到了一个做计时器的方法吗? – deanWombourne 2012-01-10 13:45:05