移动操作系统,每年会有一个大版本的发布,对部分功能多少会有影响,最近由于苹果发布了IOS10,以及android .6系统的普及,导致部分项目无法正常运转,尝试了一番,解决了所有问题,为此记录一下,方便同样问题的同志及时解决掉。
IOS10升级后的问题
其实自从IOS9+以后, iphone平台变化还是挺大的,可能这里列举不是很全,算是参考吧!
HTTPS协议
IOS9以后要求所有的app都要尊崇https协议,以及ipv6服务标准。
对此最好的解决方案就是,更改服务的协议到https。
还有一种方案就是需要配置NSAppTransportSecurity。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
也可以对指定的url添加白名单:
<key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict/>
<key>codepush.blob.core.windows.net</key>
<dict/>
<key>codepushupdates.azureedge.net</key>
<dict/>
</dict>
从2017年1月1日起,,所有新提交的 app 默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制,默认情况下你的 app 可以访问加密足够强的(TLS V1.2以上)HTTPS内容。
可以选择使用NSExceptionDomains设置白名单的方式对特定的域名开放HTTP内容来通过审核,比如说你的应用集成了第三方的登录分享SDK,可以通过这种方式来做。
更多的配置:
NSAllowsArbitraryLoads - 设置 true 即支持所有 HTTP 请求
NSExceptionDomains - 添加白名单
NSExceptionMinimumTLSVersion - 白名单指定域名支持的 TLS 版本
NSExceptionRequiresForwardSecrecy - 白名单指定域名是否支持 Forward Secrecy
NSExceptionAllowsInsecureHTTPLoads - 白名单指定域名禁用 ATS
NSThirdPartyExceptionMinimumTLSVersion - 白名单指定第三方服务域名最低支持的 TLS 版本
NSThirdPartyExceptionRequiresForwardSecrecy - 白名单指定第三方服务域名是否支持 Forward Secrecy
NSThirdPartyExceptionAllowsInsecureHTTPLoads - 白名单指定第三方域名禁用 ATS
配置白名单针对第三方应用
如果你的应用需要打开或者检查本地是否安装了指定的app,就需要配置一个LSApplicationQueriesSchemes, 这样才可以成功调用支付,或者地图等应用。
比如下面这个设置,是针对于百度地图的:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>