在苹果平台上使用Web技术的难度越来越大,开发人员不得不作罢。

作者 | Owen Williams
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)

以下为译文:

构建Web的编程语言往往也会涉足移动应用。这在很大程度上是为了让开发人员可以重用构建Web产品时编写的代码,通常这些代码需要在Linux、Android、Windows和macOS等操作系统上运行。
然而,苹果却不喜欢这种Web技术的重用。它希望Mac应用商店中的应用不会出现在其他任何地方,且无法在其他平台上运行。最近,苹果又出现了政策变动,致使开发人员在提交包含Web代码的应用时会遇到更大的困难。
Mac应用商店已悄然开始拒绝使用流行工具Electron制作的应用,因为开发人员可以通过该工具以Web代码为基础构建一切应用。苹果商店中一些非常流行的应用,例如Slack、Spotify、Discord和WhatsApp等都属于此类。
在Github社区的讨论中,数名开发人员表示,他们使用Electron构建的应用遭到了拒绝(以前这些应用都获得了批准),苹果给出的解释是“试图隐藏私有API的使用”,也就是说这些API并非专门为苹果内部使用而设计,而是为了第三方开发人员。通常我们不赞成使用私有API来构建面向公众的应用,这是因为这些API可能会随着时间的流逝而发生变化或出问题,而且苹果也禁止应用使用这类API。
多年来,Electron使用这些私有API都没有问题。开发人员可以利用有些私有API大幅改善功耗,而苹果认可的工具会破坏用户的体验。在大多数情况下,苹果并没有为需要访问这些私有API功能的开发人员提供其他方法。
如今,除非Electron框架的实现发生重大变更,否则使用Electron构建了应用的数千名开发人员都无法发布更新。
虽然开发人员可以通过网站分发他们的应用程序,要求用户直接下载,但这意味着他们需要放弃Mac应用商店中的自动更新机制和iCloud同步等功能。而且,这种直接面向消费者的方法也可能很快也会陷入僵局,因为苹果公司颇有争议的公证要求可能会提出审查的要求。
以前苹果也曾有过阻碍Web在其平台上发展的举措。
苹果不允许在iOS上使用完全独立的第三方浏览器,并要求所有应用在呈现基于Web的内容时都必须使用苹果的Safari浏览器。尽管苹果商店提供了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技术越来越痛苦,开发人员不得不作罢。如今,苹果商店不再接受使用Electron构建的应用程序,开发人员可能会找到创造性的迂回策略,但无疑这是一场苹果与开发人员之间永不停息的猫鼠游戏,苹果计划今后更进一步控制在其平台上运行的应用。
一般这类的变动都会以隐私或安全的名义展开,然而现实情况是,如果用户和开发人员都没有选择权时,这种争论就显得微不足道了,因为苹果控制着这个平台、浏览器引擎以及应用的分发方式。无论你如何看待Electron应用的质量,选择才是最重要的。
苹果对其应用生态系统的控制是一种新型的垄断,对于立法者而言这种做法很难理解,而且我们也毫无反抗之力,因为当苹果同时控制着发行方式和平台本身时,我们根本就没有办法摆脱这些桎梏。
原文:https://onezero.medium.com/apple-is-trying-to-kill-web-technology-a274237c174d
本文为 CSDN 翻译,转载请注明来源出处。
【END】

学好python能干什么?原来前景如此

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

热 文 推 荐 

Electron 遭封杀,Web 开发者在苹果平台上举步维艰!相关推荐

  1. linux java web.pdf,Java Web应用在ARM Linux平台上的实现.pdf

    Java Web应用在ARM Linux平台上的实现.pdf lSSN1009-3044 and KnowledgeTechnology电■知识与技术 Computer l-5690963 V01.5 ...

  2. 2015 MVP 社区大课堂开课了, 给App及Web开发者学习最新的Universal Windows 平台知识

    Windows 10 Developer Readiness - Powered by MVPs - 由微软最有价值专家(MVP)主讲在免费线直播课程 ---------- One windows p ...

  3. java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用

    为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...

  4. 微软产品经理:你不能不知道的 6 个 Web 开发者工具

    使用开发者工具是开发人员的日常,但多数人往往只使用其中的一小部分,很多功能其实都无人问津.在微软 Edge 项目部担任开发者工具首席产品经理的 Christian Heilmann 认为,开发者工具正 ...

  5. Microsoft Edge:你不能不知道的6个Web开发者工具

    微软产品经理:你不能不知道的6个Web开发者工具 作者|Christian Heilmann 译者|核子可乐 策划|燕珊 多数开发者只有实在没有办法(在谷歌.Stack Overflow 乃至其他社交 ...

  6. 融云 IM 在 Electron 平台上的设计实践

    Electron 凭借其相对更低的研发成本投入.强大的跨平台支持.拥有基数庞大的 Javascript 开发者受众等优势,在 PC 端桌面应用软件研发领域异军突起. 本文旨在分享融云 IM 在 Ele ...

  7. 马桶MT、聊天宝、多闪齐遭封杀,看云通讯产业如何变局?

    科技云报道原创. ""马桶MT"."聊天宝"."多闪"三款即时通讯APP横空出世,来势汹汹,大有向微信宣战之意.然而热闹还没有持续 ...

  8. 马斯克儿子被跟踪/ ChatGPT小程序遭封杀/ 特斯拉市值“腰斩”…今日更多新鲜事在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是12月16日星期五,明天就是周末啦- 快来和日报君康康,今天科技圈有哪些新鲜事. 马斯克儿子被跟踪,推特取消共享位置 马斯克在最新 ...

  9. 前端每周清单第 7 期:Vue现状与展望、编写现代 JavaScript 代码、Web 开发者安全自检列表...

    前端每周清单第 7 期:Vue现状与展望.编写现代 JavaScript 代码.Web 开发者安全自检列表 为InfoQ中文站特供稿件,首发地址为这里:如需转载,请与InfoQ中文站联系.从属于笔者的 ...

最新文章

  1. 线程锁与避免线程锁 线程锁检测
  2. 接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程
  3. java 数组json_如何在Java中创建JSON数组
  4. C++ leetcode 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外
  5. 通道抠图--火焰,背景颜色统一为黑色
  6. 开卡教程_流量卡开卡教程(必看)
  7. 【PostgreSQL-9.6.3】函数(1)--数值型函数
  8. 无需公式或代码,用生活实例谈谈 AI 自动控制技术“强化学习”算法框架
  9. [转]jQuery: how to get which button was clicked upon form submission?
  10. C# 获取项目程序路径的10种方法
  11. EasyPR编译指南
  12. 怎么把英文字幕翻译成中文?快把这些方法收好
  13. java.lang.Byte cannot be cast to java.lang.Integer,sql 到 java 类型转换遇到的问题
  14. CoAP协议之初探(一)
  15. android-4集成高德地图的搜索和导航功能
  16. jdk、openjdk、jre、jvm、jep、jar、jmod
  17. JVM监控常用的6个命令行工具
  18. eaxsinbx_用“三行列表法”计算两次分部积分题
  19. 日本交通卡-SUICA卡
  20. 「算法」 关于随机化排序算法

热门文章

  1. 每日英语:Foreign Tourists Skip Beijing
  2. 杀不死的人狼——我读《人月神话》(四)
  3. 软齿面主要失效形式_齿轮4种常见故障原因,如何采取预防措施,避免齿轮失效...
  4. 矩池云上安装chumpy失败
  5. html基础技术笔记
  6. 记录——《C Primer Plus (第五版)》第十一章编程练习第二题
  7. 对Boost.Asio中异步事件循环的理解
  8. 剑指offer之青蛙跳台阶
  9. 中国塑料加工机械市场趋势报告、技术动态创新及市场预测
  10. IntelliJ IDEA 2018 汉化补丁