我正在尝试使用一些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]; }
解决方法
我已经提交了一个雷达(28303779),其概念证明为
sample code – 也包含雷达的措辞.我也开了一个
dev forum post,看来很多工程师都面临着同样的问题. deferredLocationUpdatesAvailable()在iOS 10中也返回false.似乎苹果故意关闭了这个功能.
更新