作者:Owen Williams
链接:https://dwz.cn/L5RDL9cR
这家公司在自己的平台上为基于 Web 技术的使用设下了重重障碍,希望开发者就此退缩。
用来构建 Web 的编程语言往往会在应用程序中找到自己的立足之地,这在很大程度上归功于对应的软件技术。这些软件允许开发人员在开发支持 Linux、Android、Windows 和 macOS 等操作系统的产品时,“复用”他们为 Web 程序所编写的代码。
但是苹果公司并不喜欢这种 Web 技术的回收再利用方式,它希望 Mac App Store 中塞满你在其他任何地方都找不到的应用程序,不想让在各个平台上都能见到的应用充斥 App Store。随着最近的政策更改,开发人员向这家公司提交包含 Web 代码的应用程序也变得更困难。
Mac App Store 已经默默地开始拒绝使用一款流行工具制作的应用程序:Electron 允许开发人员在基于 Web 的代码的基础上开发运行在所有平台上的应用。App Store 中的一些最受欢迎的应用程序(例如 Slack、Spotify、Discord 和 WhatsApp 等)都属于这一类型。
在 Github 上的相关讨论中,几位开发人员表示,他们使用 Electron 构建的应用程序被拒绝了——过去,这些应用还能通过审核——但现在,审核拒绝的同时还给出了说明:这些应用程序“试图隐藏私有 API 的使用”。这里的“私有 API“指的是专为苹果公司内部使用而设计的 API,没有对第三方开发人员开放授权。人们通常不赞成使用私有 API 来构建面向公众的应用程序,因为时间一长这些 API 可能被更改或损坏,并且苹果公司禁止使用它们的应用程序上架。
相关探讨:https://github.com/electron/electron/issues/20027
多年来,Electron 一直在使用这些私有 API,过去都没出什么问题。这些私有 API 允许开发人员做很多事情,例如大幅改善功耗。相比之下,使用苹果公司认可的工具实现类似的目标只会让用户体验变得更糟。在大多数情况下,苹果公司并没有为想要获得这些私有 API 所提供功能的开发人员提供真正可行的选择。
现在,除非 Electron 框架发布重大更改,否则使用 Electron 构建应用的数千名开发人员已经不太可能为应用发布更新了。
开发人员可以从自己的网站分发他们的应用程序,要求用户直接下载它们。但这意味着要放弃一些好处,诸如苹果公司在 Mac App Store 中提供的自动更新机制和 iCloud 同步之类的功能。而且,这种直接面向消费者的方法也可能很快就被锁定了,因为苹果公司发布了充满争议的公证条款,根据这一条款苹果可能会要求对这些第三方渠道发布的应用进行审查。
公证条款:https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution
苹果公司在自己的平台上阻碍 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 应用程序的质量有何看法,选择权都是非常重要的。
苹果对其应用程序生态系统的控制是一种新型的垄断,对于立法者而言这是很难理解的,而且我们也难以反抗——因为当公司同时控制发行渠道和平台本身时,根本没有摆脱这些限制的方法。
我自己是一名从事了多年开发的前端老程序员,辞职目前在做自己的前端私人定制课程,今年年初我花了三个月整理了一份最适合2019年学习的前端学习干货,从最基础到高级的各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。
联系客服