【发布时间】:2015-01-30 14:02:13
【问题描述】:
我正在开发一个使用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 问题?
【问题讨论】:
-
请调试并查看_locationManager的值。也许它是 nill,或者是 CCLocationManager 以外的其他类?
-
刚刚做了,_locationManager ivar 已正确初始化并且属于 CLLocationManager 类。太糟糕了,修复起来并不容易。 ://
标签: ios objective-c core-location cllocationmanager