우리 앱에서는 CoreLocation을 사용하여 사용자 위치를 얻고 있습니다. startUpdatingLocation에 대한 호출이 매번 locationManager : didUpdateLocations를 호출한다고 생각했습니다. 하지만 처음으로 전화를 받으면 더 이상 전화를받지 않습니다.didUpdateToLocation이 두 번째로 호출되지 않았습니다.
- (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];
}
위의 코드는 startUpdatingLocation에게 15 초마다 호출해야하지만 didUpdateToLocation 방법은 두 번째라고하기 나의 AppDelegate.m에서
(처음으로 성공적으로 호출 된 ...).
didUpdateToLocation을 프로그래밍 방식으로 호출 (또는 강제 적용) 할 수있는 방법이 있습니까? 아니면 didUpdateToLocation이 위치를 얻을 때까지 기다려야합니까? 나는 매 x 분/초마다 사용자의 위치를 얻는 방법을 모색했지만 아무도 성공하지 못했다. 내가 뭘하고 싶은지 안드로이드가 서비스 클래스 (iOS는 이것을 가지고 있지 않다)로 어떻게하는지에 상응한다.
도움을 주시면 감사하겠습니다.
감사합니다.
-
distancefilter=10
을 변경? 나는 지금 같은 문제가있다. 그러나 그것의 단지 다섯 번 업데이트. 그 후 그것 자체는 멈추고있다. 시뮬레이터에서 잘 작동합니다. 이걸 도와주세요. – sathiamoorthy안녕하세요. 불행히도, 여전히 내 문제에 대한 "솔리드"솔루션이 없습니다. 그것이 도움이 될지 모르겠지만, 귀하의 경우, 아마도 OS가 백그라운드 작업 타임 아웃을위한 논리를 죽이고 있습니까? 나는 정보 설정에서 "필요한 백그라운드 모드"를 확인하는 것을 잊어 버린 경우를 한 번 가지고있었습니다 ... –
나는 내 문제에 대한 해결책을 가졌습니다. iOS6에서는 "didUpdateToLocation"대신 "didUpdateLocations"를 사용해야합니다. 그것은 무슨 문제였습니다. 이제 잘 작동합니다. – sathiamoorthy