我的应用程序需要在后台跟踪用户位置的变化,只要用户在移动,它就可以正常工作。
当用户停止行动并且CLLocationManager
暂停10-20分钟左右时,会发出以下通知:
-(void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager{}
这对我来说也没问题。很好,可以省电等等。
问题是当用户重新开始移动时,CLLocationManager
从不醒来,而且直到我将应用程序放到前台(变为活动状态),以下委托方法永远不会被触发:
//Never called back after CLLocationManager pauses:
-(void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager{}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{}
设备重新开始移动后为什么locationManagerDidResumeLocationUpdates
没有被调用?难道GPS不应该自动恢复(因为已经自动暂停了)吗?
是否有一种方法可以在没有用户交互的情况下恢复GPS?
应用程序在Info.plist文件中声明了以下内容:
我的CLLocationManager设置如下:
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager setActivityType:CLActivityTypeFitness];
//I WANT pauses to save some battery, etc... That is why following line is commented out (default)
//[locationManager setPausesLocationUpdatesAutomatically:NO];
locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];