问题
在iOS8之前,app第一次开始定位服务时,系统会弹出一个提示框来让用户选择是否允许使用定位信息。但iOS8后,app将不会出现这个弹窗。第一次运行之后,在�设置->隐私->定位服务中,你的app没有任何设置,既不是“永不”,也不是“始终”。
解决方案
以上代码在iOS8之后需要手动调用CLLocationManager对象的requestAlwaysAuthorization/requestWhenInUseAuthorization方法。 调用该方法需要在Info.plist中设置NSLocationAlwaysUsageDescription/NSLocationWhenInUseUsageDescription的值。
代码如下:
- (void)viewDidLoad{
[super viewDidLoad];
CLLocationManager *manager = [[CLLocationManager alloc] init];
manager.delegate = self;
[manager requestAlwaysAuthorization];
manager.desiredAccuracy = kCLLocationAccuracyBest;
[manager startUpdatingLocation];
}
info.plist设置如下: