我尝试使用locationManager
在后台每隔"时间间隔跟踪位置"当应用程序在后台时。
它在iOS 8 iPhone 6上运行良好 - 但是在iOS 9 iPhone 6s中,我在2.5到3分钟后不断被终止。
我的主要问题是 - iPhone 6 iOS 8和iOS iOS 9有什么区别?更好的看门狗计时器用于后台任务?如果是这样我怎么解决这个问题?
我播下的解决方案包括降低准确性以节省电池寿命而不是时间间隔,我不希望这样,因为用户始终看到位置监控指示(全箭头)。
我的一些代码 -
-(void)initialize
{
self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.locationManager.distanceFilter = 5;
self.locationManager.delegate = self;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(addMonitorsBeforeWillTerminate)
name:UIApplicationWillTerminateNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidEnterBackgroundNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
[[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
}];
[self.locationManager startUpdatingLocation];
}
感谢
答案 0 :(得分:0)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")){
[self.locationManager setAllowsBackgroundLocationUpdates:YES];
}
可以在以下link中找到更多深度和广度信息。
答案 1 :(得分:0)
我推荐两种选择。
答案 2 :(得分:0)