在IOS 8使用CLLocationManager定位服务。
问题:
IOS8之前,开启应用的时候,会主动询问是否允许开启定位服务权限。
升级到IOS8后,开启应用的时候,没有询问是否允许开启定位服务权限,到设置定位服务勾选始终,再开启应用,定位服务便去掉了始终勾选。
解决:
在iOS8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务。另外在iOS8中,苹果进一步改善了定位服务,让开发者请求定位服务时需要向用户提供更多的透明。此外,iOS8中还支持让应用开发者调用全新的“访问监控”功能,当用户允许后应用才能获得更多的定位数据。
- (void)openGPS
{
if (locationManager == nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 越精确,越耗电!
locationManager.distanceFilter = 500.0f;
}
if([[[UIDevice currentDevice]systemVersion] floatValue] >= 8.0){
[locationManager requestWhenInUseAuthorization ]; //加入ios8 api,显示允许框
}
[locationManager startUpdatingLocation]; // 开始
}
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status) {
case kCLAuthorizationStatusNotDetermined:
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[locationManager requestAlwaysAuthorization];
}
break;
case kCLAuthorizationStatusDenied:
break;
default:
break;
}
}
并且在info.plist文件中添加字段