作者 | 小盖
如果要说开发者最讨厌什么东西,那 IE 浏览器肯定是首当其冲。究其原因,其实也很简单,因为 IE 的设计严重过时,也无法支持现代网站和 Web 应用程序中常见的各类前沿 Web API 与技术。但现在,IE 已经成为过去式,微软拿出了更新、更先进的浏览器替代选项 Edge。
在 IE 解甲归田之后,最烦人浏览器的“桂冠”立马有了后继者——苹果 Safari。
同样的,Safari 在对现代 Web API 及功能的支持能力方面一直落后于其他竞争对手,这直接导致咱们工程师很难在各类主流浏览器(Chrome、Edge、Firefox 与 Safari)上实现统一的产品体验。
这篇文章是我早上看到的,Reddit 上编程模块被顶到了第一名。作者 Perry Sun 是一个创业公司的产品营销经理,他的观点不一定对,但我期望能给你一些启发。
另外,Reddit 上大家的讨论非常热烈,你可以上去看看。
渐进式 Web 应用
现在我们已经探索在浏览器上实现与本机应用高度统一的应用体验了。
这一切的实现依靠的是所谓渐进式 Web 应用(PWA),这是一整套现代浏览器技术的统称,允许开发者在网站上构建起外观、感受与执行效果高度类似于智能手机、平板电脑或台式机上原生应用程序的 Web 应用。
渐进式 Web 应用确实很酷,甚至能够实现以下几种以往专属于本机应用程序的特性:
  • 全屏运行(不显示任何浏览器 UI)
  • 操作系统级别的通知与警报
  • 能够在以离线状态继续运行应用
  • 本地数据存储与检索
  • 在智能手机的主屏幕上添加应用图标
  • 访问各类硬件功能,例如相机、麦克风、USB 接口等
渐进式 Web 应用不需要编译,也不需要提交给应用商店进行审批。如今,星巴克、Twitter 及 Uber 等主流应用都选择了渐进式 Web 应用作为载体。
苹果公司之所以在 Safari 对渐进式 Web 应用的支持方面行动迟缓,当然有着自己的考量。他们一直在严格限制渐进式 Web 应用的功能,比如禁止此类应用发布系统通知或者向主屏幕添加快捷方式图标等。
还不止于此。iOS 唯一支持的 Web 渲染引擎就是苹果自己的 WebKit,任何第三方 iOS 浏览器(包括 Chrome)只能使用 WebKit,不得匹配任何其他引擎(这一点在 Windows、Android 或者 MacOS 上均不受限制)。而 WebKit,正是 iOS 系统上渐进式 Web 应用的管理功能来源。
苹果为什么要对渐进式 Web 应用的 Web API 加以限制?冠冕堂皇的理由当然是用户隐私,但这话我们恐怕只能信一半
很多朋友应该都能想到,一旦功能齐备的渐进式 Web 应用得到全面支持,那么 iOS App Store 将面临巨大竞争。而只有在 App Store 正式上架的应用,苹果才能从一切应用本体购买或应用内购买交易额中抽成 30%。
不久之前,关于苹果不愿支持渐进式 Web 应用的争议还主要集中在 Web 开发者社区。但如今,随着 Epic 与苹果间反垄断诉讼的升温,问题终于被暴露在公众视野当中。
最终,苹果可能会被迫全面拓展渐进式 Web 应用支持,或者对其他第三方 iOS 浏览器敞开大门。但诉讼结果究竟如何,我们只能拭目以待。
用一招“拖”字诀应对 WebRTC
Web 开发者及工程师们,一直在抱怨 Safari 没法像其他浏览器那样良好支持重要的 Web API 与 CSS 功能。
一位 Reddit 用户曾经这么抱怨过,“……苹果根本不鸟任何现代 API。渐进式 Web 应用?流应用?死一边去。但是,苹果大哥,我们真的很需要这一切。”
以 WebRTC 为例,它主要用于支持 Web 上的视频与音频通信,也常用于发送文件及共享屏幕内容。
苹果拖了好几年时间才真正把 WebRTC 支持引入 Safari,远远落后于 Chrome 及 Firefox,这也让 Safari 沦为开发者甚至是行业观察者口中的笑话。
尽管支持终于到来,但众所周知,WebRTC 在 Safari 桌面版上的运行效果远远不及其他浏览器。开发者发现 WebRTC 在 iOS 中的支持更是一团糟,甚至堪称无药可救。
之前,曾经有人批评 Safari 不支持 VP9 视频编码器或 WebP 图像压缩格式。但好消息是,直到 2020 年底,相关支持终于上线。但老毛病还在——与其他主流浏览器相比,上线时间太过滞后。
如今,新的难题再次被摆在苹果面前——到底要不要团结一切力量,支持 AV1 视频编解码器及相关 AVIF 图像格式。但这事同样困难重重,因为苹果自身能从竞争性编解码器 HEVC 中获取专利费,同时也是 HEIC 图像格式的强硬支持者。
Bug 频出,更新不及时
很多开发者都在论坛上抱怨 Safari 在 Web API 与 CSS 功能的实现中存在众多 bug,而苹果的解决速度一直相当迟缓。
“苹果不是世界上最有钱的企业之一吗?拿点钱出来,把问题解决了啊!”Reddit 上一位用户这样吐槽道。
更让人沮丧的是,与 Chrome 或 Firefox 不同,Safari 根本没有固定的更新周期。它的更新频率与底层操作系统保持一致,如此漫长的更新周期对网络浏览器来说简直离谱。
连微软都有种对 Edge 浏览器采用自动更新,苹果,你呢?
也许一切都将改观
请别误会我的意思,Safari 是款非常出色的网络浏览器,不仅性能强大、而且隐私功能相当可靠。
但与此同时,对核心 Web 技术及 API 那糟糕的支持能力则令人困惑又愤愤不平。
iOS 巨大的普及面再加上苹果不断用种种手段阻碍开发者在多种平台上创建统一且优秀的 Web 体验,就更是让人怒气冲天。
这背后的原因我们可以理解,毕竟苹果已经决定把自身命运押在服务收入上,因此 App Store 产生的应用 / 内购抽成将至关重要。
面对公众的舆论压力,苹果公司向来会有所妥协。因此在可预见的未来,相信苹果会参考用户意见、对 Safari 的设计思路做出一些有份量的调整。期待苹果的行动。
原文链接:https://blog.perrysun.com/2021/07/15/for-developers-safari-is-crap-and-outdated/
今日好文推荐

InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!
点个在看少个 bug👇
继续阅读
阅读原文