deferredLocationUpdatesAvailable在iOS 10中返回NO

我正在尝试使用一些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.似乎苹果故意关闭了这个功能.

更新

我的错误报告已关闭,说’它按预期工作’.我想苹果公司并不打算解决这个问题,并且在没有弃用的情况下错误地将其取出.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...