IOS 개발에 착수하고 있으며 언어에 익숙하지 않습니다.IOS - 위치 업데이트 간격
백그라운드에서 기기의 위치를 추적하는 앱을 개발하려고합니다. 일부 자습서를 따라 위치 업데이트를 기록하는 코드를 작성했습니다.
-(void)CurrentLocationIdentifier
{
locationManager = [CLLocationManager new];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
NSLog(@"%@", newLocation);
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self CurrentLocationIdentifier];
}
작동합니다. .plist 파일을 구성 했으므로 백그라운드에서 실행되도록 등록되어 있으므로 끝까지 기록됩니다.
하지만 업데이트가 주기적으로 정의 된 간격으로 필요합니다. 그렇지 않으면 배터리 킬러가됩니다. 배경에 대한 위치 정보 업데이트에 대한 질문은 여기에 있습니다.하지만 시도가 성공하지 못하고 막혔습니다. 나는 업데이트을 stoping 및 위치 업데이트 리스너 내에서 NSTimer에 시작 일정을 시도했습니다
:
CurrentLocationIdentifier
다시 시작 업데이트를 요청하는 방법이다
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
NSLog(@"%@", newLocation);
[locationManager stopUpdatingLocation];
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(CurrentLocationIdentifier)
userInfo:nil
repeats:NO];
}
.
하지만 처음 실행되면 예약 된 작업이 실행되지 않습니다! 내가 도대체 뭘 잘못하고있는 겁니까? 다른 방법으로해야할까요?
그러나 이것은 모든 사소한 변경 사항을 모니터링하는 것만큼 배터리를 소모하지 않습니까? – LcSalazar
아니요, 중요한 위치 업데이트 변경 사항은 Wi-Fi 및 셀 타워 모니터링은 물론 GPS를 사용하여 사용자가 상당한 거리 (일반적으로 몇 백 미터 이상)를 이동할 때까지 위치 업데이트를 연기합니다. 올해와 지난 해의 위치 서비스에 대한 WWDC 비디오를 보거나 Apple의 위치 서비스 프로그래밍 가이드를 읽는 것이 좋습니다. 그들은 위치를 효율적으로 사용하기위한 우수 사례를 논의합니다. – Paulw11
타이머 접근 방식을 사용하면 iOS를 "두 번째로 추측"하려고합니다. 이 방법을 사용하면 iOS가 기기에서 위치 업데이트를 조정할 수 있으며 다른 앱이 자세한 위치 정보를 사용하는 경우 앱에서 자동으로 업데이트 빈도가 높아집니다. 그렇지 않다면 iOS가 배터리 효율성을위한 위치 업데이트를 관리합니다 – Paulw11