苹果加强对其应用生态系统垄断:弃用 Web App
对于开发者而言,如今从别的平台直接搬运代码到苹果平台越来越困难了,其中一个原因就是苹果增加了代码直接移植的难度,一方面是苹果希望独占这些程序,让开发者仅仅维护苹果这一个平台的程序,另一方面这也是苹果进行生态垄断进程中的一部分。本文译自 Medium 中原标题为“Apple Is Trying to Kill Web Technology”的文章。
很多开发网页的编程语言通常也可以编写应用程序。这在很大程度上是由于软件允许开发人员在他们构建的产品中”重用”他们为网页编写的代码,站长资源平台这些产品可以在 Linux、Android、Windows 和 macOS 等操作系统上运行。
但苹果有理由不喜欢这种网页开发技术的循环利用。它希望自己的应用商店里的应用程序是你在其他任何地方都找不到的,而不是在每个平台上都能找到的。随着最近政策的改变,该公司让开发者提交包含网页代码的应用程序变得更加困难。
苹果的应用商店已经开始悄悄地拒绝使用一种名为“电子 ( Electron )”的流行工具开发的应用程序,这种工具可以让开发人员将所有的网页代码都直接转变为应用程序。应用商店中一些最受欢迎的应用,如 Slack、Spotify、和 WhatsApp,就属于这一类。
在一次开源社区 Github 的讨论中,几位开发人员表示,他们拒使用 Electron 开发的应用程序,因为这项技术会导致有些代码不透明,所用的技术和调用的第三方库都不明确,这带来一个问题就是用这种技术开发的软件通常质量比较一般,因为用不明确的第三方的技术很不稳定,会带来闪退、黑屏、卡顿等问题。所以苹果公司希望开发者都用他们提供的接口去开发代码,这样的话能更大程度地去匹配他们的设备。
多年来,Electron 公司一直在使用自己开发的第三方库。例如,有些 api 有强大的功能,能极大地提高开发人员的效率,而苹果授权的工具有时候却让开发人员多走很多弯路。在大多数情况下,苹果并没有为这些开发人员提供真正的更便捷的替代方案。
现在,除非 Electron 框架对其实现进行重大更改,否则数千名使用 Electron 构建应用程序的开发人员不太可能重新更新他们的代码。
开发者也可以在自己的网站上发布应用,让用户直接下载。但这意味着苹果将放弃从应用商店和 iCloud 同步中自动更新的功能。这种直接面向消费者的下载方式可能很快也会被苹果禁止,因为苹果需要这些应用程序通过他们的审查以后才能被用户下载。
苹果其实一直以来都在向网页应用施加压力。在 iOS 系统上,苹果不允许完全独立的第三方浏览器,要求所有应用程序在呈现网页的内容时都要利用 Safari 浏览器。虽然 Chrome 和 Opera 等浏览器可以在应用商店中使用,但它们必须在后台使用苹果的 Safari 浏览器来呈现网页,而不是自己的网页。这意味着苹果垄断了 iPhone 和 iPad 用户的上网方式。为了推动开发人员在 iOS 上构建应用程序,而不是使用网页开发技术,苹果为了自身的利益,忽略了其他浏览器已经实现的成熟的网页开发规范。
苹果微妙的反竞争做法单独来看并不可怕,但它们共同构成了一个明确的战略。
例如,一种名为 WebRTC 的技术允许在网页浏览器中进行视频通话,而不需要额外的软件。它为像谷歌 Meet 这样的工具提供技术支持。但苹果在实现这一规范时速度慢得令人难以置信,遗漏了一些关键的功能,而且这项技术嵌入应用程序后无法工作。
苹果还限制了一种新兴的标准,叫做渐进网络应用程序 ( PWAs ) ,它和 Electron 一样,允许开发者为桌面和移动设备开发类似于基于网页的应用程序。如果用户在 Chrome 或 Firefox 中打开应用程序,PWA 不会出现同样的问题,但 iPhone 和 iPad 用户由于真正利用第三方浏览器,这使得基于 PWA 的技术毫无希望。
开发人员使用诸如 Electron 和 PWA 之类的技术,因为它们允许跨平台进行更快的更新,而不需要一组完全不同的代码和完全不同的编程语言。有些人认为这会导致应用程序质量下降,但我认为并不会,对于想要跨平台而不用诸如 Electron 和 PWA 技术的应用来说,另一种选择是只用网页而完全不使用应用程序,或者是减少应用程序在不同平台的更新代价,因为同时维护同一个应用在 Windows、Mac 和基于网页下的代码既复杂又昂贵。苹果最近推出了一个与之竞争的框架,名为 Catalyst,它允许 iPad 应用程序的开发人员快速地将它们带到 macOS 系统上——对于专门针对苹果用户的开发人员来说,这是一个很好的工具,但对于那些开发跨平台应用程序的开发人员来说就不是这样了。
苹果微妙的反竞争做法单独来看并不可怕,但它们共同形成了一个明确的战略 : 让那些在苹果平台上使用基于网页的技术开发应用程序变得非常痛苦,从而使开发人员放弃这条道路。既然 App Store 现在不接受使用 Electron 开发的应用,开发者可能会找到另外一些创造性的方法来解决这个问题,但苹果正在为一场持续的猫鼠游戏做准备,因为它计划在未来对哪些应用可以在这个平台上运行施加更多的控制。
这些控制可能是以隐私或安全的名义进行的,人们可能会抗议,但这种抗议非常无力,因为苹果控制着平台、浏览器引擎和发布方法,所以用户和开发者都别无选择。
苹果对其应用生态系统的控制是一种新型的垄断,立法者很难理解,我们也很难反击——因为当公司同时控制分销方式和平台本身时,我们根本没有办法摆脱这些限制。