我正在开发一个使用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
问题?
答案 0 :(得分:0)
延迟请求解决了我的问题。
当我的viewDidLoad
rootViewController
方法触发顶层时,它始终被拒绝。在按钮点击后大约一秒左右请求授权工作完美。当CLLocationManager
在项目中而不是在嵌入式框架中经常使用时,从未经历过这种行为。事实上,我之前在项目中使用了完全相同的实现,一切都很顺利。