【发布时间】:2015-05-31 06:46:11
【问题描述】:
我有一个仅限 IOS 8 的应用程序,我想在其中使用位置服务来获取设备的纬度和经度。我想我已经正确实现了一切,但是应用程序从不询问用户是否可以使用位置服务,CLAuthorizationStatus 永远不会从 kCLAuthorizationStatusNotDetermined 和 CLLocationManager 委托方法更改
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
永远不会被调用。
这是在视图控制器的接口文件中定义的 CLLocationManager:
__strong CLLocationManager *locationManager;
这是视图控制器中的代码:
- (void)viewDidLoad{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
if (status == kCLAuthorizationStatusNotDetermined) {
[locationManager requestWhenInUseAuthorization];
}
[locationManager startUpdatingLocation];
//... other viewDidLoad code
}
应用的 Info.plist 文件有一个 NSLocationWhenInUseUsageDescription 条目。
调试跟踪显示该行
[locationManager requestWhenInUseAuthorization];
被执行,但没有出现要求用户确认定位服务的对话框。
此应用程序中的定位服务在 iOS 7 下正常工作 - 我显然做错了什么,或者没有做我需要做的事情以使其在 iOS 8 中工作。但我一直在寻找洞察力,看起来对我来说,好像我做的一切都是正确的。
有什么想法和/或建议吗?提前致谢。
【问题讨论】:
标签: ios objective-c cllocationmanager