嵌入式框架中的CLLocationManager实例不请求授权?

时间:2015-01-30 14:02:14

标签: ios objective-c core-location cllocationmanager

我正在开发一个使用CLLocationManager执行某些BeaconRegion监控的嵌入式框架。框架中的CLLocationManager实例只是不会请求用户授权。我错过了什么?

  • NSLocationAlwaysUsageDescription 已在应用程序和框架的 Info.plist 文件中设置,以确保。

  • 已设置应用的后台功能位置更新使用蓝牙LE配件

我正在尝试这样的授权:

- (void)requestPermissionsIfNecessary {
    if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [_locationManager requestAlwaysAuthorization];
    } else {
        NSLog(@"_locationManager does not respond to 'requestAlwaysAuthorization'!");
        NSLog(@"CLAuthorizationStatus: %d", [CLLocationManager authorizationStatus]);
    } 
}    

_locationManager未响应选择器而CLAuthorizationStatus为0(kCLAuthorizationStatusNotDetermined)。

我正在测试iOS 8.1.1 iPhone 6 Plus。

有任何帮助吗?提前谢谢!

编辑:

现在至少我能够进行_locationManager请求授权。不知道为什么现在要求它。 但是,locationManager:didChangeAuthorizationStatus:委托方法会再次报告kCLAuthorizationStatusNotDetermined的状态。听起来像Info.plist问题?

1 个答案:

答案 0 :(得分:0)

延迟请求解决了我的问题。

当我的viewDidLoad rootViewController方法触发顶层时,它始终被拒绝。在按钮点击后大约一秒左右请求授权工作完美。当CLLocationManager在项目中而不是在嵌入式框架中经常使用时,从未经历过这种行为。事实上,我之前在项目中使用了完全相同的实现,一切都很顺利。