xcode6打开以前工程在Ios8系统无法定位解决方案
xcode6打开以前xcode5工程,发现程序不能定位,包括iOS8模拟器,真机都不能定位?代码经检查没有问题,后来查找苹果Ios8升级差异策略,发现Ios8对定位处理做了一些调整,工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位。修改点如下:
1: 在Info.plist中加入两个缺省没有的字段 ,值均设置为YES
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
2:启动定位代码[locationManager startUpdatingLocation] 前,需要增加Ios8判断处理
if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0) {
//设置定位权限 仅ios8有意义
[locationManager requestAlwaysAuthorization];
}
[locationManager startUpdatingLocation];
3:实现 CLLocationManagerDelegate 代理 - (void)locationManagerCLLocationManager *)manager didChangeAuthorizationStatusCLAuthorizationStatus)status 方法,注意:如不增加该代理方法实现,会导致首次调用定位时候无法弹出 ”程序启动定位提示框“ 导致定位失败
#pragma mark - 授权定位
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
NSLog(@"调用代理");
switch (status) {
case kCLAuthorizationStatusNotDetermined:{
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[locationManager requestWhenInUseAuthorization];
}
}
break;
default:{
}
break;
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。