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));