正确适配苹果ATS审核要求的姿势
首先,ATS的技术行为不会有任何变化(除了新增两个字段NSAllowsArbitraryLoadsInWebContent和NSRequiresCertificateTransparency,也就是更细分权限)。从技术角度来看,ATS在iOS10中和iOS9中的表现完全一致。
那么到底是什么变化了呢?我们会收紧审核政策,即对于开发者添加的ATS例外(即HTTP接口),要求提供一个“合理的解释”。之所以要增加这么一个“麻烦”,是为了避免开发者们都无脑地全局关闭ATS,使得ATS偏离其初衷,形同虚设。开发者将无法再无脑地全局关闭ATS,并且添加例外时需要提供合理的解释。
如此看来,苹果是想以这样的形式教育和促进HTTPS的普及,但也没有激进到一刀切的地步。一句话总结:你仍然可以在2017年之后使用HTTP接口,但需要在ATS中添加例外,同时审核时多少说两句理由。更重要的是,你要知道这个政策会越来越紧。
躲得过初一,躲不过十五。早点开始考虑向HTTPS迁移吧!
针对 Info.plist
iOS 10 在之前版本中,app都在 Info.plist 中添加 NSAppTransportSecurity
字典并且将 NSAllowsArbitraryLoads
设置为YES来禁用 ATS。iOS 10中又添加了 NSAllowsArbitraryLoadsInWebContent 字典,这会对迁移方案产生什么影响呢?根据苹果要求,app 已经不能再使用之前的方式来禁用 ATS,也就意味着 NSAllowsArbitraryLoads 只能设置为 NO,否则就需要在审核时说明 app 不支持ATS的原因。
业内大神王巍已经总结了一幅非常直观的ATS对HTTP影响图表,如下:
1、NSAllowsArbitraryLoads 设置为 YES 似乎可以解决问题,但这不符合苹果ATS要求。
2、NSAllowsArbitraryLoads 设置为 NO,NSAllowsArbitraryLoadsInWebContent 设置为 YES,HTTP只有在iOS 10下的 WKWebview可用。
3、NSAllowsArbitraryLoads ,NSAllowsArbitraryLoadsInWebContent 都设置为 NO,HTTP全部不可用。
4、NSAllowsArbitraryLoads 设置为 YES,NSAllowsArbitraryLoadsInWebContent 设置为 NO,HTTP只支持iOS 9但不符合ATS要求,而且iOS 10下的 WKWebview也不可用。
5、NSAllowsArbitraryLoads ,NSAllowsArbitraryLoadsInWebContent 都设置为 YES,HTTP只有 WKWebView 支持。
综合苹果要求,与实际产品业务需求,选择使用 NSAllowsArbitraryLoads 设置为 NO (避免审核风险),NSAllowsArbitraryLoadsInWebContent 设置为 YES(允许链接HTTP),设置HTTP域名访问白名单,使用WKWebView作为Web容器的技术方案。
针对NSURLSession API
只需将网络库更新至最新版的AFNetworking,即可完美支持HTTP、HTTPS的API请求。
针对Web容器
使用 WKWebView 替换 UIWebView,业务对接采用Web与Native交互协议来解决兼容问题。iOS 10 中 WKWebView 完美支持HTTP、HTTPS的链接浏览(包括在线视频播放)。
针对网络图片下载库SDWebImage
测试环境下将会使用自签名的SLL证书,需要修改一些代码才能支持,生产环境下使用商业签名证书无需做修改。
针对第三方HTTP链接
可以设置 NSExceptionDomains 属性来将需要排除强制验证的域名写进来。 也就是说我如果我们的 app 只访问我们自己的服务器, 我们可以将我们服务器的域名添加进来,依然可以继续使用 HTTP。但我们不能像之前那样简单粗暴的直接把所有的请求都通过。NSExceptionDomains 的设置方法如下, 比如我们要将 campus.chinahr.com 这个域名排除在 ATS 验证之外,就可以这样:
不过苹果建议如果要提供浏览器类的服务,请使用SFSafariViewController(UI不可定制),优于WKWebView,后者更适用于对用户访问web内容更有把控的情况。
正确适配苹果ATS审核要求的姿势的更多相关文章
- 针对苹果最新审核要求为应用兼容IPv6
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- 为苹果ATS和微信小程序搭建 Nginx + HTTPS 服务
昨天测试开发微信小程序,才发现微信也要求用HTTPS加密数据,想来是由于之前苹果的ATS审核政策的缘故吧,微信想在苹果上开放小程序必然也只能要求开发者必须使用HTTPS了,于是在服务器上测试安装Ngi ...
- 服务器配置ssl证书支持苹果ATS方法
服务器配置ssl证书支持苹果ATS方法 发布日期:2016-12-14 苹果安全工程&架构部门主管Ivan Kristic表示ATS将在今年底成为App Sotre app的必要条件,这将大幅 ...
- 苹果ATS Win2008 R2 IIS7.5 HTTPS 证书的那些可能遇到的坑
前言:工作这么多年,每一次要弄https 都和苹果有关,上一次是苹果app的企业安装形式,ios7后 .plist 文件必须在一个https路径. 这一次则是苹果的ATS计划,无疑这是在推动网络安全上 ...
- https与http的访问,应对苹果ATS验证问题
为应对2017年1月1日苹果ATS的问题,微信.微博等等APP要求挂载的网页必须https访问,需要添加ssl认证. 一.SSL认证 选取了阿里云提供的免费SSL,使用期限为一年.电话咨询阿里客服,免 ...
- Apache和Nginx配置支持苹果ATS方法
什么是ATS功能? ATS是iOS9和OS X El Capitan的一个新特性.开启该功能后,ATS对使用NSURLConnection, CFURL或NSURLSession 等APIs 进行的网 ...
- 苹果ATS 豁免摆乌龙?
现象 我们的App已经完成了NA部分的ATS适配.网页端由于有使用到第三方的页面,所以开启了网页的豁免权限.关于如何开启豁免及方法,可以参考喵神的Blog最终,我们的适配参数为: NSAllowsAr ...
- 针对苹果最新审核要求:应用兼容IPv6
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- 针对苹果最新审核要求 为应用兼容IPv6
本文授权转载,作者:我不是段誉(简书) 在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.而今年5月初,苹果宣布6 ...
随机推荐
- hihoweek 137(简单完全背包)
题目链接:http://hihocoder.com/contest/hiho137/problem/1 题意:中文题诶- 思路:各层的成本计算不会有影响,所以我们只要把没一层的成本计算出来在求和就是答 ...
- cogs 1901. [国家集训队2011]数颜色
Cogs 1901. [国家集训队2011]数颜色 ★★★ 输入文件:nt2011_color.in 输出文件:nt2011_color.out 简单对比时间限制:0.6 s 内存限制 ...
- 笔记-JavaWeb学习之旅16
增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...
- Python小世界:匿名函数、高阶函数、推导式
前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...
- Git 深度学习填坑之旅一(git安装和配置、基本命令)
前戏 最近不管是工作还是ctf比赛,接触与使用git变得越来越多,git半吊子水平的我已经不能支撑日常工作了.碰巧自己公司项目刚上线,现在能挤出一点时间来挖一下这个坑... 为什么使用Git 1.后悔 ...
- 2016 CCPC-Final
A.The Third Cup is Free #include <bits/stdc++.h> using namespace std; typedef long long ll; in ...
- IOS 打包提示错误(ERROR ITMS-90125: ERROR ITMS-90087: ERROR ITMS-90209:)
提示这种错误是集成环信造成的,解决方法看环信的官方文档: 集成动态库上传AppStore 由于 iOS 编译的特殊性,为了方便开发者使用,我们将 i386 x86_64 armv7 arm64 几个平 ...
- CC33:碰撞的蚂蚁
题目 在n个顶点的多边形上有n只蚂蚁,这些蚂蚁同时开始沿着多边形的边爬行,请求出这些蚂蚁相撞的概率.(这里的相撞是指存在任意两只蚂蚁会相撞) 给定一个int n(3<=n<=10000), ...
- [TCP/IP]OSI七层模型和TCP/IP四层模型
OSI參考模型 在過去的電腦網路上,由於資料通訊系統涉及複雜的軟硬體,可是又沒有統一的標準,導致通訊軟體不僅龐大複雜,而且不易測式.修改或分享.為此,ISO(國際標準組織)發展出一套OSI參考模型(O ...
- Codeforces 1168C(二进制、dp)
要点 '&'操作暗示二进制上按位思考 对于y为1的位,要求x和y之间要至少有两个此位为1的(包含x.y),这样&起来才不是0.而这些位中只要存在一个是ok的即可 dp去求每个x的每个位 ...