我有一個應用程序,收集前景和背景中的位置數據。爲了節省電池,我想使用allowDeferredLocationUpdatesUntilTraveled屬性,如Apple Doc 中所解釋的那樣,allowDeferredLocationUpdatesUntilTraveled在前臺設置(基於時間和距離)。一旦應用程序進入後臺,我們將不會收到定期的位置更新,而是基於allowDeferredLocationUpdatesUntilTraveled接收它們。推遲在後臺位置更新
我已經實現了下面的代碼,但不推遲在後臺調用。
#pragma mark - Location Manager
-(void) setLocationManager
{
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.delegate = self;
[locationManager startUpdatingLocation];
}
-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"didUpdateLocations");
if (!deferringUpdates)
{
CLLocationDistance distance = 200;
NSTimeInterval time = 60;
[locationManager allowDeferredLocationUpdatesUntilTraveled:distance timeout:time];
deferringUpdates = YES;
}
}
-(void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error
{
NSLog(@"didFinishDeferredUpdatesWithError");
}
SetLocationManager在前臺被調用,工作正常。一旦應用程序進入後臺,我仍然會收到定期的位置更新,而不是allowDeferredLocationUpdatesUntilTraveled。
我也設置在Info.plist文件 背景下面的值取 背景更新位置 設備功能 - 位置服務
任何運氣與實施呢?
'locationManager:didFinishDeferredUpdatesWithError:'方法返回的'error'的值是什麼? – LazarusX
嘿@mobiletest,你能解決這個問題嗎?如果是的話,你會不會在這裏分享這個正確的答案 –