【发布时间】:2014-11-25 08:14:32
【问题描述】:
我正在开发带有位置服务器的 IOS 应用程序。在应用程序中,我定期检查用户位置,并将位置详细信息发送到服务器。
以下是步骤:
1:应用注册位置更新(在 plist 中)。
2:添加如下代码:
-(void)startUpdating{
locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
locationManager.pausesLocationUpdatesAutomatically = YES;
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
locationManager.distanceFilter = kCLDistanceFilterNone;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
dispatch_async(dispatch_get_main_queue(), ^{
//call web service location
[self UpdateAppmyLocation:@"1"];
});
[locationManager allowDeferredLocationUpdatesUntilTraveled:200 timeout:(NSTimeInterval)90];
}
- (void)applicationWillResignActive:(UIApplication *)application
{
[locationManager startUpdatingLocation];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[locationManager stopUpdatingLocation];
}
3:在 didFinishLaunchingWithOptions 中调用了 startUpdating 方法。
一切正常,但 didUpdateLocations:locations 方法每分钟调用一次。我正在尝试增加延迟一段时间,以免导致电池问题。
注意:在装有 iOS 7.1 的 iPhone 5 上测试应用
请告诉我解决方案。
【问题讨论】:
-
据我所知,allowDeferredLocationUpdatesUntilTraveled 无法正常工作。
-
给出 Domain=kCLErrorDomain Code=11 "操作无法完成。(kCLErrorDomain error 11.) 错误。
标签: ios iphone background location