苹果在2019年更新了审核条款,其中可能对我们影响最大的就是HTML技术的应用了。
总所周知,苹果一向以来都不喜欢动态特性,从最早的其他语言限制,以及到jspatch的禁用。这里涉及到的就有两个问题了。
- 一是苹果自身所说的保证其生态以及用户体验一致性,这样的确能够淘汰一大批低质量和壳应用,清洗了整个生态环境。
- 二则是苹果自身的利益。苹果不予许一些应用绕过他的审核,来做一些事情。
国内开发者对于苹果对动态化的态度非常的不满,目前国内对于动态性的热情依然还是非常高涨,这得益于国内软件开发现状。但在我看来,这事情有好有坏。
- 对于我们客户端开发来说,这个饭碗不会那么容易丢了。
- 目前市面上的应用参差不齐,还有很多违法的,这的确能够减少很多这样的现象。
- 对于大部分应用来说,有没有动态化其实并没有太大的影响。
反对的人则主要觉得:
- 无法热修复(这个人觉得真不能怪苹果,自己的质量不过关,给应用埋下一个后门真的不太好,特别是一些涉及用户隐私和金钱的)
- 无法实现3端统一,无法一套代码多端使用,减少人力成本。(个人认为想要做3端统一,则必须要牺牲一些平台特性,反而可能造成不符合当前平台的行为。而所谓的write once,目前证明大部分都是夸张的。阿里已经抛弃weex,Facebook自己也没有用RN。至于较少人力成本,这个还真不一定,毕竟想要找到能够了解多端特性的人才还是非常困难的。)
- 快速响应,快速上线(由于苹果的审核机制,这个是国内最大的痛点。这可能与国内的环境有关,没有长远、详细的计划,经常改变策略)
那么我们真的无法使用HTML5技术了吗?下面我们来解读一下苹果条款。
App Store Review Guidelines:
4.7 HTML5 Games, Bots, etc.
Apps may contain or run code that is not embedded in the binary (e.g. HTML5-based games, bots, etc.), as long as code distribution isn’t the main purpose of the app, the code is not offered in a store or store-like interface, and provided that the software (1) is free or purchased using in-app purchase; (2) only uses capabilities available in a standard WebKit view (e.g. it must open and run natively in Safari without modifications or additional software); your app must use WebKit and JavaScript Core to run third-party software and should not attempt to extend or expose native platform APIs to third-party software; (3) is offered by developers that have joined the Apple Developer Program and signed the Apple Developer Program License Agreement; (4) does not provide access to real money gaming, lotteries, or charitable donations; (5) adheres to the terms of these App Review Guidelines (e.g. does not include objectionable content); and (6) does not support digital commerce. Upon request, you must provide an index of software and metadata available in your app. It must include Apple Developer Program Team IDs for the providers of the software along with a URL which App Review can use to confirm that the software complies with the requirements above.
苹果并没有禁止HTML5,而是指出要合理的利用HTML技术。从苹果最终还是上了PWA这件事上来说,苹果并没有阻止HTML5这样的技术。苹果只是希望控制应用的权限,不要做一些挂羊头买狗肉的事情。那么我们来看看目前几种比较热门的技术吧。
RN、WEEX
苹果已经警告过这两个方案了,后续虽然苹果并没有对这两个技术下手,但个人觉得从这次苹果的态度来说,还是非常反对这种技术的,因为这个技术太容易做到挂羊头卖狗肉的事情了。虽然这个和热修复来说,只是公开了有限的能力,但其本质上来说和HTML5应用还是一样的。
那么我们一点都不能用了吗?以目前苹果的态度来说,也没有完全禁止,只是禁止使用这些技术做核心功能,而一些次要功能应该暂时还是安全的。如果是纯RN应用,那么个人建议还是尽早想想退一步的方案了。优化好的网页也不比原生的差。
小程序
小程序这个其实已经动到了苹果的利益了,如果你不是大厂,个人不太建议去试探苹果。
而这次更新,苹果更是明确说了HTML5应用更适合在浏览器上使用,而不是一个独立的app。所以个人并不太看好这个方案。
flutter
以目前来看,最符合苹果的方案只有flutter了。
因为在iOS系统中,flutter是以二进制打包进去的,并没有违反苹果的条款。
听说咸鱼团队已经开始做flutter的字节码虚拟机了。恩。。。这个个人还是持保留态度,也建议小厂不要没事和苹果干。
最后
最后,我们需不需要动态特性依然还是需要看自身业务需求,大量展示型的,没有复杂交互的页面使用这类技术的确拥有更多优势,但是动态性的投入产出比可能并不一定能有那些技术宣传的那么好。