【发布时间】:2017-01-22 18:13:13
【问题描述】:
我正在尝试使用一些 CoreLocation 功能,但我遇到了延迟位置更新的问题。
由于某些原因,当针对 iOS 10 更新应用程序时,deferredLocationUpdatesAvailable 总是返回 NO。我在 iPhone 6s 上进行测试,所以我知道该设备能够使用 GPS 功能。
我尝试用它来调试:
[CLLocationManager deferredLocationUpdatesAvailable]
我不知道这是 iOS 10 的问题,还是我的某些设置不正确。
在这个方法中:
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error {
self.deferringUpdates = NO;
NSLog(@"DEFERRING Error: [%@]", error);
if (error) {
[[LocationManagerClient alertWithMessage:error.localizedDescription andTitle:error.domain] show];
}
}
我最终记录了这个错误:
DEFERRING Error: [Error Domain=kCLErrorDomain Code=11 "(null)"]
有没有其他人在 iOS 10 上遇到过这个问题或者知道发生了什么?
编辑: 这就是我设置距离过滤器的方式
- (void)configureForApplicationWillResignActive {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[_locationManager setDistanceFilter:kCLDistanceFilterNone]; // use distance filter
[_locationManager requestAlwaysAuthorization];
}
- (void)configureForApplicationDidBecomeActive {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[_locationManager setDistanceFilter:kCLDistanceFilterNone]; // use distance filter
[_locationManager requestAlwaysAuthorization];
}
【问题讨论】:
-
您是否设置了除 0 以外的距离过滤器?这将导致错误 11。你能说明你是如何初始化你的 CLLocationManager 的吗?
-
已编辑以获取更多详细信息。
-
我们遇到了完全相同的问题,在我们的 iPhone 6s 和 6 设备上的 iOS 10 上调用 [CLLocationManager deferredLocationUpdatesAvailable] 总是返回 NO。激活延迟位置更新会导致 kCLErrorDomain Code=11
-
对我来说同样的问题,iPhone 6S 和 10.0.2。非常令人沮丧,因为我花了很多天来正确获得延迟更新。您是否将其报告为错误?
-
我们在我们的应用程序中看到了同样的问题,deferredLocationUpdatesAvailable() 在 iOS 10.0.2 下总是返回 false 并且激活延迟位置会导致使用 kCLErrorDeferredFailed 调用 didFinishDeferredUpdatesWithError - 我提交了一个雷达:openradar.appspot.com/radar?id=4927958787555328
标签: ios objective-c core-location