このアプリでは、CoreLocation を使用してユーザーの位置情報を取得しています。startUpdatingLocation を呼び出すと、毎回 locationManager:didUpdateLocations が呼び出されると思いました。しかし、最初に呼び出されると、もう呼び出されることはありません。
私の AppDelegate.m で:
- (void) startStandardUpdates {
if (_locationManager == nil) {
_locationManager = [[CLLocationManager alloc] init];
[_locationManager setDelegate:self];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.distanceFilter = 10;
[_locationManager startUpdatingLocation];
} else {
NSLog(@"[LOCATION]: Location Manager already exists.");
[_locationManager startUpdatingLocation];
}
}
次に、NSTimer で呼び出します。
- (void) startTask {
NSLog(@"Start task called.");
[NSTimer scheduledTimerWithTimeInterval:15
target:self
selector:@selector(actualTask)
userInfo:nil
repeats:YES];
}
- (void) actualTask {
NSLog(@"[TASK]: Starting location service...");
[self startStandardUpdates];
}
上記のコードは 15 秒ごとに startUpdatingLocation を呼び出す必要がありますが、didUpdateToLocation メソッドは 2 回目に呼び出されません (最初の呼び出しは成功しました...)。
didUpdateToLocation を「プログラムで」呼び出す(または強制する)方法はありますか? それとも、didUpdateToLocation が場所を取得するまで待つ必要がありますか? x分/秒ごとにユーザーの場所を取得する方法を検索しましたが、誰もそれを成功させていないようです。私がやりたいことは、Android が Service クラスでそれを行う方法とまったく同じです (iOS にはこれがありません)。
どんな助けでも大歓迎です。
ありがとうございました。