做者|Owen Williams译者|王强编辑|王文婧这家公司在本身的平台上为基于 Web 技术的使用设下了重重障碍,但愿开发者就此退缩。android
用来构建 Web 的编程语言每每会在应用程序中找到本身的立锥之地,这在很大程度上归功于对应的软件技术。这些软件容许开发人员在开发支持 Linux、Android、Windows 和 macOS 等操做系统的产品时,“复用”他们为 Web 程序所编写的代码。ios
可是苹果公司并不喜欢这种 Web 技术的回收再利用方式,它但愿 Mac App Store 中塞满你在其余任何地方都找不到的应用程序,不想让在各个平台上都能见到的应用充斥 App Store。随着最近的政策更改,开发人员向这家公司提交包含 Web 代码的应用程序也变得更困难。git
Mac App Store 已经默默地开始拒绝使用一款流行工具制做的应用程序:Electron 容许开发人员在基于 Web 的代码的基础上开发运行在全部平台上的应用。App Store 中的一些最受欢迎的应用程序(例如 Slack、Spotify、Discord 和 WhatsApp 等)都属于这一类型。github
在 Github 上的相关讨论中,几位开发人员表示,他们使用 Electron 构建的应用程序被拒绝了——过去,这些应用还能经过审核——但如今,审核拒绝的同时还给出了说明:这些应用程序“试图隐藏私有 API 的使用”。这里的“私有 API“指的是专为苹果公司内部使用而设计的 API,没有对第三方开发人员开放受权。人们一般不同意使用私有 API 来构建面向公众的应用程序,由于时间一长这些 API 可能被更改或损坏,而且苹果公司禁止使用它们的应用程序上架。web
相关探讨:https://github.com/electron/electron/issues/20027chrome
多年来,Electron 一直在使用这些私有 API,过去都没出什么问题。这些私有 API 容许开发人员作不少事情,例如大幅改善功耗。相比之下,使用苹果公司承认的工具实现相似的目标只会让用户体验变得更糟。在大多数状况下,苹果公司并无为想要得到这些私有 API 所提供功能的开发人员提供真正可行的选择。macos
如今,除非 Electron 框架发布重大更改,不然使用 Electron 构建应用的数千名开发人员已经不太可能为应用发布更新了。编程
开发人员能够从本身的网站分发他们的应用程序,要求用户直接下载它们。但这意味着要放弃一些好处,诸如苹果公司在 Mac App Store 中提供的自动更新机制和 iCloud 同步之类的功能。并且,这种直接面向消费者的方法也可能很快就被锁定了,由于苹果公司发布了充满争议的公证条款,根据这一条款苹果可能会要求对这些第三方渠道发布的应用进行审查。canvas
公证条款:https://developer.apple.com/documentation/security/notarizing_your_app_before_distributionswift
苹果公司在本身的平台上阻碍 Web 发展的作法由来已久。在 iOS 上,苹果公司不容许使用彻底独立的第三方浏览器,要求全部应用在渲染基于 Web 的内容时,都必须使用他们的 Safari 浏览器。尽管 App Store 中提供了 Chrome 和 Opera 之类的浏览器,但它们必须在后台使用苹果公司的 Safari 浏览器来渲染网页,不能使用本身的渲染引擎。这意味着苹果垄断了 iPhone 和 iPad 用户访问 Web 的方式。为了推进开发人员在 iOS 上构建原生应用程序(而不是使用 Web 技术),苹果公司出于自身利益,无视了其余浏览器实现的开放 Web 规范中的许多流行部分。
单独来看,苹果公司这些微妙的反竞争作法彷佛并不怎么可怕,但它们连在一块儿造成了一项明确的战略。
例如,一种称为 WebRTC 的技术无需使用额外的软件便可在 Web 浏览器中进行视频通话。它为 Google Meet 等工具提供了支持。但苹果公司实现这一规范的速度异常缓慢,还遗漏了一些关键功能。当开发者将这一技术嵌入到应用程序中时,它也没法正常工做。
苹果公司还阻碍了一种新兴的标准,即渐进式 Web 应用程序(PWA)——这项技术与 Electron 同样,容许开发人员为桌面和移动端构建效果相似原生的应用——苹果的作法是只实现该标准的一部分,结果让它与完整标准相距甚远,使开发者难以依靠。若是用户能在 Chrome 或 Firefox 中启动 PWA 应用就不会出现这些问题,可是 iPhone 和 iPad 用户没法安装第三方浏览器,苹果公司也关闭了用户使用基于 PWA 技术的途径。
开发人员愿意使用诸如 Electron 和 PWA 之类的技术,是由于它们加快了跨平台更新的速度,而且无需使用一系列不一样的代码库。有人认为这样会产出质量较低的应用程序,但我认为不用它们的结果就是根本作不出这种跨平台应用,或者作出的应用程序更新缓慢,由于针对 Windows、Mac 和 Web 平台单独维护产品的作法既复杂又昂贵。苹果公司最近推出了一个竞争性的框架,称为 Catalyst,这一框架容许制做了 iPad 应用的开发人员将其快速引入 macOS——对专门面向苹果用户的开发人员来讲,这是一款出色的工具,但对那些跨平台应用来讲没什么意义。
单独来看,苹果公司这些微妙的反竞争作法彷佛并没什么可怕的,但它们连在一块儿造成了一项明确的战略:给开发人员在苹果平台上使用基于 Web 的技术构建应用的作法设下重重障碍,最终逼迫这些开发者退缩。既然 App Store 不接受使用 Electron 构建的应用程序,开发人员可能会找出创新的方法来解决这个问题,可是苹果公司已经准备玩一场长期的猫鼠游戏,由于它计划将来进一步控制平台上能够运行哪些应用程序。
https://www.macrumors.com/2019/09/03/apple-macos-catalina-notarization-mac-apps/
这些变化多是以隐私或安全的名义进行的。但现实状况是,当用户和开发人员都没有选择权时,这种名义就显得微不足道了,由于苹果公司控制了平台、浏览器引擎和分发渠道。不管你对 Electron 应用程序的质量有何见解,选择权都是很是重要的。
苹果对其应用程序生态系统的控制是一种新型的垄断,对于立法者而言这是很难理解的,并且咱们也难以反抗——由于当公司同时控制发行渠道和平台自己时,根本没有摆脱这些限制的方法。
做者介绍Owen Williams 是一名开发人员,偶尔会写一些东西。他是 Medium 的专栏做者,试图挖掘技术背后的深层意义。
原文连接:
https://onezero.medium.com/apple-is-trying-to-kill-web-technology-a274237c174d