首页 > 代码库 > 第三十一篇、iOS 9版本适配

第三十一篇、iOS 9版本适配

1.网络适配(强制回退HTTP)

  为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1.2 协议。因为 AFNetworking 现在的版本底层使用了 NSURLConnection ,众多App将被影响(基于iOS8.x-SDK的App不受影响)。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。而这一做法,官方文档称为ATS,全称为App Transport Security,是iOS9的一个新特性。

技术分享

 

2.后台定位

 // 1. 实例化定位管理器_locationManager = [[CLLocationManager alloc] init];// 2. 设置代理_locationManager.delegate = self;// 3. 定位精度[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];// 4.请求用户权限:分为:①只在前台开启定位②在后台也可定位,//注意:建议只请求①和②中的一个,如果两个权限都需要,只请求?即可,//①②这样的顺序,将导致bug:第一次启动程序后,系统将只请求①的权限,②的权限系统不会请求,只会在下一次启动应用时请求?if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {    //[_locationManager requestWhenInUseAuthorization];//?只在前台开启定位    [_locationManager requestAlwaysAuthorization];//?在后台也可定位}// 5.iOS9新特性:将允许出现这种场景:同一app中多个location manager:一些只能在前台定位,另一些可在后台定位(并可随时禁止其后台定位)。if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {    _locationManager.allowsBackgroundLocationUpdates = YES;}// 6. 更新用户位置[_locationManager startUpdatingLocation];

技术分享

 

3.企业级分发(如果不信任证书,应用不可以使用,注意:服务器上的Bundle id 要设置和项目中的一样,不然不可以下载)

技术分享

 

 

4.添加信任的白名单(不信任则第三方的分享不可以使用)

 

5.字体间隙变大UI异常(在ios8显示完全,当时一到ios9中就显示不全)

CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));

 

第三十一篇、iOS 9版本适配