iOS9 中默认非HTTPS的协议是被禁止的,我们为了能正常发起http请求,在info.plist文件中添加AppTransportSecuritySettings字典,将NSAllowsArbitraryLoads设置为YES来禁止ATS。
iOS10 从2017年1月1日起苹果提出所有新提交的App默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制,也就是说强制我们用HTTPS,否则我们提交App可能会被拒绝。
解决方案
通过NSExceptionDomains设置白名单的方式来针对特定的域名开放HTTP内容来通过审核。可以简单理解成,把不支持https协议的接口添加到白名单。
操作步骤
- 在项目info.plist中添加一个Key:App Transport Security Settings,类型为Dictionary
- 在第一步添加的字典内添加一个Key: Exception Domains,类型为Dictionary
- 在Exception Domains内添加要支持的域,其中域作为Key,类型为Dictionary
- 每个域下面需要设置3个属性:类型为Boolean
NSIncludesSubdomains YES
NSExceptionRequiresForwardSecrecy NO
NSExceptionAllowsInsecureHTTPLoads YES
应用场景
- 第三方不支持https请求的接口
- 不支持https协议的图片地址
- 不支持https协议的h5网址
玩的开心......