1

iOS7 でこの手法を使用して x 秒ごとに場所を取得しようとしています - Periodic iOS background location updates

私のdidUpdateLocationsで:

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

これを実行すると、ループが発生するようです。setDesiredAccuracy: - これにより、変更時に更新自体が強制されると思います。これが私がループを取得している理由です。これは正しいでしょうか? これらをコメントアウトすると、期待どおりに動作します。これらを設定したときに場所を取得するのを止める方法はありますか?

4

1 に答える 1

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"
    }
}
于 2013-11-03T13:45:51.903 に答える