iOS9.0适配


自己从网上摘录的一些文章,用于大家搜索解决问题以及自己存档。

网络适配由http改成https

目前都支持https,但仍然有些公司不支持,故且看之。
方案一:让服务器更新。

第一种方案是最佳的,因为使用http的话,会存在以下主要风险:

1、窃听风险:第三方可以获得通信内容。

2、篡改风险:第三方可以修改通信内容。

3、冒充风险:第三方可以冒充他人来进行通信。

而使用https所带给我们的好处如下:

1、所有信息都是加密传播,第三方无法窃取。

2、具有校验机制,一旦通信内容被篡改,通信双方可以立即发现。

3、配备身份证书,防止他人冒充。

但是就目前情况来看,让服务器更新的代价太大,大的公司应该很大可能会让服务器更新,一般公司会采用第二种方案。

方案二:暂时倒回到不安全的网络传输协议(http协议)

(1)、在info.plist中增加一个NSAppTransportSecurity字段,类型是字典。

(2)、然后给其增加一个Key:NSAllowsArbitraryLoads,类型是Boolean类型,值为YES。

方案三:设置域(把把不支持https协议的接口设置成http的接口)

(1)、在info.plist中增加一个key:NSAppTransportSecurity,类型为字典类型。

(2)、然后添加一个NSExceptionDomains,其类型是字典类型。

(3)、把需要支持的域给添加到NSExceptionDomains里,其中域作为key,类型为字典类型。

(4)、每个域下面需要设置3个属性,分别为NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads,均为Boolean类型,其值分别为YES,NO,YES。技术分享

新浪微博的域:weibo.com、weibo.cn、sina.com.cn。微信的域:qq.com。QQ/QZone的域:qq.com

Bitcode

Bitcode是被编译程序的一种中间形式的代码。包含Bitcode配置的应用将在App Store上被编译和链接。Bitcode允许苹果在后期重新优化我们应用的二进制文件,而不需要我们重新提交一个版本到App Store上。
如果用Xcode7创建的app默认是包含有bitcode,但是是可以选择的。如果,我们的app包含了bitcode,我们工程中所有的第三方sdk必须也得支持bitcode,否则的话,就会报错误的。
解决这个错误,有两种方案:
方案一:把不支持Bitcode的SDK给移除掉,等待第三方更新SDK。而目前大部分社交平台的SDK并不支持Bitcode。
方案二:把Bitcode给关闭掉

Scheme白名单

从iOS9.0后,涉及到平台客户端的跳转,系统会自动到info.plist下检查是否设置Scheme。如果没有做相应的配置,就无法跳转到相应的客户端。因此如果客户端集成有分享与授权,需要配置Scheme白名单。
解决方案:
(1)、在info.plist增加key:LSApplicationQueriesSchemes,类型为NSArray。
(2)、添加需要支持的白名单,类型为String。
新浪微博白名单:sinaweibo、sinaweibohd、sinaweibosso、sinaweibohdsso、weibosdk、weibosdk2.5。

微信白名单:wechat、weixin。

支付宝白名单:alipay、alipayshare。

QQ与QQ空间白名单:mqzoneopensdk、mqzoneopensdkapi、mqzoneopensdkapi19、mqzoneopensdkapiV2、mqqOpensdkSSoLogin、mqqopensdkapiV2、mqqopensdkapiV3、wtloginmqq2、mqqapi、mqqwpa、mqzone、mqq。

另外,如果应用使用了检测是否安装了某款app,我们会调用canOpenURL, 如果url不在白名单中,即使手机上有这款app,也会返回NO。

补充:在使用sharesdk进行分享的时候,如果你设置有微信、QQ、QQ空间分享,并且你也把相应的白名单给添加进去了,但是如果你手机上没有装QQ的时候,也是不会出现分享到QQ的选项。

iPad适配Slide Over和Split View

若想适配multi tasking特性,建议不使用纯代码,改用storyboard、xib的形式。

补充,本文所说的都是iOS9.0SDK的新特性,如果你的app版本是基于iOS8.X、iOS7.X,并不受iOS9.0新特性约束。也就是说Xcode7给iOS8.X打设备包不需要白名单也能调用canOpenURL,但是Xcode7给iOS9.X打包则需要,Xcode7和iOS9缺一不可。

文章目录
  1. 1. 网络适配由http改成https
  2. 2. Bitcode
  3. 3. Scheme白名单
  4. 4. iPad适配Slide Over和Split View
|