您的位置:首页 > 移动开发 > IOS开发

小结一下最近项目如何适配IOS9

2015-09-25 11:54 218 查看
反正现在也已经习惯了,每次只要苹果系统一升级,对于APP开发者来说一系列的适配问题也就会随之而来。所以需要我们不断的关注和记录新系统、新特性。

1、App Transport Security(ATS)

对于IOS9苹果在系统的安全策略上已经做了重大的调整和努力。出于安全性的考虑,为提高系统及应用安全性在IOS9引入了的新特性:App Transport Security(ATS)。并且一旦开启ATS后,应用所有的网络请求将会自动转换为HTPPS传输,且采用一系列配置要求来保证数据传输的安全性。也就是说,如果在Xcode7之前使用的是HTTP请求,那么在Xcode7上编译的APP是无法联网的,因为Xcode7(IOS9下)默认是开启ATS的,所以编译后的APP默认使用HTTPS请求。其实现在解决方法有两个,一个是使服务器支持HTTPS请求,另一个就是关掉ATS,使APP还是使用原来的HTTP请求。为了减少开发的成本和效率,一般我们采取的是第二种方法,也就是关掉ATS。幸好Apple官方也向开发者提供了可以选择支持的配置。

Apple虽然希望开发者可以积极的参与并为系统及应用安全共同努力,但官方仍提供了一些参考配置去禁用ATS功能或降低ATS的安全性要求。开发者可以在App的Info.plist中添加NSAppTransportSecurity的相关配置,用以禁用ATS或者添加白名单,可用的配置参数如下:

NSAllowsArbitraryLoads - 设置true即支持所有HTTP请求

NSExceptionDomains - 添加白名单

NSExceptionMinimumTLSVersion - 白名单指定域名支持的TLS版本

NSExceptionRequiresForwardSecrecy - 白名单指定域名是否支持Forward Secrecy

NSExceptionAllowsInsecureHTTPLoads - 白名单指定域名禁用ATS

NSThirdPartyExceptionMinimumTLSVersion - 白名单指定第三方服务域名最低支持的TLS版本

NSThirdPartyExceptionRequiresForwardSecrecy - 白名单指定第三方服务域名是否支持Forward Secrecy

NSThirdPartyExceptionAllowsInsecureHTTPLoads - 白名单指定第三方域名禁用ATS

这里我们使用的是禁用ATS。具体的做法是:在工程的Info.plist文件里添加NSAppTransportSecurity的字典类型,添加一个元素:key为NSAllowsArbitraryLoads,值为YES。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitrary</key>
<true/>
</dict>




到这里我们的APP就禁用了ATS了,退回到了继续支持使用HTTP请求的时代。但是随着Apple不断在系统和应用安全领域的努力,我相信用不了多久就要强制要求开发者必须开启支持ATS了。就像从34位应用过度到强制开发者提交支持64位的应用一样。所以,我们还是要未雨绸缪,开始着手升级App的服务器,升级以适配ATS要求。

2、Bitcode

开启Bitcode编译后,可以使得开发者上传App时只需上传Intermediate Representation(中间件),而非最终的可执行二进制文件。 在用户下载App之前,AppStore会自动编译中间件,产生设备所需的执行文件供用户下载安装。其中,Bitcode的机制可以支持动态的进行App Slicing,而对于Apple未来进行硬件升级的措施,此机制可以保证在开发者不重新发布版本的情况下而兼容新的设备。

目前,对于Bitcode我们现在需要考虑的是三个平台:iOS,Mac OS和watchOS。对于iOS,bitcode是可选的,这是值得我们庆幸的。Mac OS是不支持bitcode的。而对于watchOS,bitcode是必须的。

对于IOS开发需要注意的是,Xcode 7默认是开启Bitcode的,如果应用开启Bitcode,那么其集成的其他第三方库也需要是Bitcode编译的包才能真正进行Bitcode编译。所以根据目前的情况,项目中或多或少都会引用了各种第三方库,然而,这些第三方库的厂商也不会那么快更新去升级他们的库以支持Bitcode。所以,业内大家基本都是直接关闭Bitcode。以解决第三方库不支持Bitcode的问题。否则就会编译报错。

关闭Bitcode步骤:”Build Settings”-->”Enable Bitcode”选项中关闭Bitcode。



3、IOS9使用URL Scheme必须将其加入白名单

在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。由于我们的项目使用了微信SDK、微博SDK、支付宝SDK,所以这里只列出添加这三个SDK的URL Scheme白名单。

步骤:

1)在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。

2)然后给它添加一个需要支持的项目,类型为字符串类型。



关于其他更多的URL Scheme白名单,可以参考:http://wiki.mob.com/ios9-对sharesdk的影响(适配ios-9必读)/

参考:http://wiki.mob.com/ios9-对sharesdk的影响(适配ios-9必读)/

http://www.csdn.net/article/2015-09-11/2825675
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: