iOS9 新特性
一. iOS9网络适配-改用更安全的HTTPS
iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是强制增强数据访问安全,而且系统 Foundation 框架下的相关网络请求,将不再默认使用 Http等不安全的网络协议,而默认采用 TLS1.2。服务器因此需要更新,以解析相关数据。如不更新,可通过在Info.plist 中声明,倒退回不安全的网络请求。
解决办法:
1.立即让公司的服务端升级使用TLS1.2
2.虽Apple不建议,但可通过在Info.plist 中声明,倒退回不安全的网络请求依然能让App访问指定http,甚至任意的http.
具体做法:
1.在info.plist配置中修改XML源码(右键Info.plist->OpenAs->SourceCode)
2.在info.plist文件中修改NSAllowsArbitraryLoads的Boolean改为YES
二.iOS9在定位上的问题
1.如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!
2.将允许出现这种场景:同一App中的多个locationmanager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定locationmanager的后台定位。
(如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条)
解决方法:
1.如何偷偷在后台定位:请求后台定位权限:
// 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];
2.配置Info.plist文件
三. Bitcode
未来Watch应用须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode。
解决方法:
1.更新library使包含Bitcode,否则会出现以下中的警告;
(null): URGENT: all bitcode will be dropped because '/Users/myname/Library/Mobile Documents/com~appl
2.关闭Bitcode
在build Setting中搜索bitcode把Enable Bitcode改成NO
四.企业级分发
iOS9之前,企业级分发十分方便:点击App出现“信任按钮”,
iOS9以后,企业级分发ipa包将遭到与Mac上dmg安装包一样的待遇:默认不能安装,也不再出现“信任按钮”
解决办法:让用户进行设置操作(设置->通用->描述文件->Simulator->选择Trust”Simulator”->信任)
五.URL scheme
在iOS9中,如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL scheme列为白名单,否则不能使用。key叫做LSApplicationQueriesSchemes ,键值内容是
LSApplicationQueriesSchemes urlscheme urlscheme2 urlscheme3 urlscheme4
六.iPad适配SlideOver 和 Splite View
【iPad适配Slide Over 和 Split View】若想适配multi tasking特性,唯一的建议:弃纯代码,改用storyboard、xib.
七.App Thinning(上线时间将会延迟)
1. App Thinning对iOS和watchOS应用安装进行优化,尽可能的减少占用空间。(一项名为“on-demand resources”的额外新功能,意味着开发者能够省略应用的完整功能直到用户自己打开。当用户点击应用内容的时候,就会动态从App Store上进行下载,这意味着只会在需要的时候占用存储空间。这项功能有趣之处还在于当将这些内容在后台进行下载之后,当存储空间紧张的时候会自动进行删除。)
2.App Store会自动将所需应用切片成“应用变体”(appvariants),根据用户所使用的设备下载仅需的文件版本。(例如你使用的设备是iPhone6 Plus,那么通过App Store的时候仅会下载当前对应设备的“应用变体”,这样能够大大减少下载时间和占用空间。而在此前应用需要下载适配所有设备的资料数据,然后根据设备进行自我判断选择。而这项功能的实施并不需要开发者或者购买者进行额外的操作,苹果承担了主要的工作任务。)