定期背景位置 - 使用所需的精度和距离滤波器

时间:2013-11-03 12:27:56

标签: ios cllocation

我试图在iOS7中使用这种技术每隔x秒获取一个位置 - Periodic iOS background location updates

在我的didUpdateLocations中:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer];
    [self.locationManager setDistanceFilter:9999];
}

当我运行这个时,我似乎得到一个循环。 setDesiredAccuracy: - 我认为这会在更改时强制更新。这就是为什么我得到一个循环,这是对的吗?当我评论这些时,它的行为就像我期望的那样。无论如何,当我设置这些时,它是否会阻止它获取位置?

1 个答案:

答案 0 :(得分:0)

听起来你应该在你调用“setDesiredAccuracy”的频率上设置某种时间/日期标记。如果你打电话一次,请不要再打电话一段时间。

类似的东西:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSTimeInterval secondsSinceLastResetOfAccuracy = [lastResetTime timeIntervalSinceNow];
    if(secondsSinceLastResetOfAccuracy > 60 * 60) // one hour
    {    
        [self.locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer];
        [self.locationManager setDistanceFilter:9999];
        lastResetTime = [NSDate date]; // new "time stamp"
    }
}