IOS version >=8.0 下CoreLocation定位问题
最近发现执行startUpdatingLocation之后locationManager的代理方法都没有被调用,搜索了一下,得到以下信息:
1、在使用CoreLocation前需要调用如下函数【iOS 8及更高】:
iOS 8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法:
(1)始终允许访问位置信息
- (void)requestAlwaysAuthorization;
(2)使用应用程序期间允许访问位置数据
- (void)requestWhenInUseAuthorization;
示例如下:
self.locationManager = [[CLLocationManager alloc]init]; _locationManager.delegate = self; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){ [_locationManager requestAlwaysAuthorization];//添加这句 } [_locationManager startUpdatingLocation];
2、在Info.plist文件中添加如下配置:
(1)NSLocationAlwaysUsageDescription
(2)NSLocationWhenInUseUsageDescription
这两个键的值就是授权alert的描述(填不填没关系),示例配置如下[勾选Show Raw Keys/Values后进行添加]:
这样就可以正常定位了。