iOS 8无法定位的解决方案
2015-03-25 16:20
183 查看
升级iOS 8后,将无法定位,特给出解决方案。
1.在Plist中追加下字段NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription(这两个字段必须有其中一个,内容是系统alert的文言,文言可为空) ,如下图所示:
WhenInUse是应用在前台的时候可以搜到更新的位置信息,Always是除了应用在前台,应用在后台(suspend或terminated)都可以获取到更新的位置数据
,根据需要,按需去申请权限。
2.修改代码,在self.mapView.showsUserLocation=
YES;前加入如下代码
定义CLLocationManager对象,私有的或者property都可以,以确保alert弹出,用户点击完以后 CLLocationManager
对象还没被释放。示例如下:
@implementation ViewController
{
CLLocationManager * locationManager;
}
……
locationManager =[[CLLocationManager alloc] init];
// fix ios8 location issue
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
#ifdef __IPHONE_8_0
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
[locationManager performSelector:@selector(requestAlwaysAuthorization)];//用这个方法,plist中需要NSLocationAlwaysUsageDescription
}
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[locationManager performSelector:@selector(requestWhenInUseAuthorization)];//用这个方法,plist里要加字段NSLocationWhenInUseUsageDescription
}
#endif
}
复制代码
以上解决方案仅针对Xcode6,适用于V2.3.0(含)之前版本。
1.在Plist中追加下字段NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription(这两个字段必须有其中一个,内容是系统alert的文言,文言可为空) ,如下图所示:
WhenInUse是应用在前台的时候可以搜到更新的位置信息,Always是除了应用在前台,应用在后台(suspend或terminated)都可以获取到更新的位置数据
,根据需要,按需去申请权限。
2.修改代码,在self.mapView.showsUserLocation=
YES;前加入如下代码
定义CLLocationManager对象,私有的或者property都可以,以确保alert弹出,用户点击完以后 CLLocationManager
对象还没被释放。示例如下:
@implementation ViewController
{
CLLocationManager * locationManager;
}
……
locationManager =[[CLLocationManager alloc] init];
// fix ios8 location issue
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
#ifdef __IPHONE_8_0
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
[locationManager performSelector:@selector(requestAlwaysAuthorization)];//用这个方法,plist中需要NSLocationAlwaysUsageDescription
}
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[locationManager performSelector:@selector(requestWhenInUseAuthorization)];//用这个方法,plist里要加字段NSLocationWhenInUseUsageDescription
}
#endif
}
复制代码
以上解决方案仅针对Xcode6,适用于V2.3.0(含)之前版本。
相关文章推荐
- IOS开发教程--Xcode6,CLLocationManager无法定位解决方案
- IOS-OC 当时接受一个烂尾的项目遇到的bug 内存泄漏 运行时的闪退,无法定位
- iOS 使用高德地图 MAMapView 无法定位的问题
- iOS开发中解决iOS8无法定位的问题
- 百度地图定位无法获得经纬度的解决方案
- iOS 带IAP提交注意事项及无法submit for review的解决方案
- iOS 关于app上线app store由于定位功能被拒解决方案
- ios 企业应用"无法安装应用程序 因为证书无效"的解决方案
- IOS10.2.1无法播放微信小视频的解决方案
- ios系统fixed定位元素滚动后无法点击
- 【iOS发展-53】实例探究:scrollView使用方法和解决方案无法滚动核心
- 关于AES256算法java端加密,ios端解密出现无法解密问题的解决方案
- 【转】关于AES256算法java端加密,ios端解密出现无法解密问题的解决方案
- iOS开发手记-iOS8中使用定位服务解决方案
- iOS 带IAP提交注意事项及无法submit for review的解决方案
- OPENGL在VC中的配置及出现“无法定位程序输入点_glutInitWithExit于动态链接库glut32.dll上”的解决方案
- iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
- eclipse中使用ctrl无法追踪函数(右键无法定位到相应的类)解决方案
- 【转】关于AES256算法java端加密,ios端解密出现无法解密问题的解决方案
- ios无法定位CLLocationManager Delegate方法不能被调用的问题