您最近使用iOS 9 GM种子版本,我看到位置更新(allowDeferredLocationUpdatesUntilTraveled:timeout :)没有延迟。我收到错误kCLErrorDeferredFailed - 位置管理器由于未知原因未进入延迟模式。
由于此错误,它根本没有进入延迟模式,并且位置更新不断触发。 相同的代码曾经在iOS 8.4及以下版本中运行。它耗尽了我设备的电池百分比。 是否有任何我们需要为iOS 9明确设置或提及。没有找到Apple文档中的任何内容?
-(void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations {
if (!self.deferringUpdates) {
[self.locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:30];
self.deferringUpdates = YES;
}
}
-(void)locationManager:(CLLocationManager *)manager
didFinishDeferredUpdatesWithError:(NSError *)error {
// Stop deferring updates
self.deferringUpdates = NO;
}
我还设置了allowsBackgroundLocationUpdates属性,但即使这样也无济于事。
self.locationManager.allowsBackgroundLocationUpdates=YES;
在iOS 9及更高版本中,无论部署目标如何,您还必须将位置管理器对象的allowsBackgroundLocationUpdates属性设置为YES,以便接收后台位置更新。默认情况下,此属性为NO,并且应该保持这种状态,直到您的应用主动要求更新后台位置为止。
Reduce Location Accuracy and Duration
请让我知道我还需要做些什么
由于
答案 0 :(得分:0)
请阅读API参考页上的discussion。
要提及的一些事项,如here
所述