Chrome就是新的Safari,而Edge和Firefox也是如此 2021-11-07 默认分类 暂无评论 3102 次阅读 ![IMG_3374-768x820.jpg][1] 如果你去iPhone上的App Store,有很多浏览器可以选择。而在最新版本的iOS中,你甚至可以将这些浏览器设置为默认浏览器。那么,为什么有些人在抱怨iOS上的浏览器选择问题? 你可能没有意识到,iOS上的所有浏览器都需要使用与Safari相同的渲染引擎。在其他平台上,情况并非如此。 以Chrome为例。在Android、Windows甚至macOS上,它们都在使用Chromium渲染引擎。但在iOS上,它使用的是WebKit。或者看看火狐,它在所有平台上都使用Gecko渲染引擎。除了在iOS上,它使用WebKit。 **为什么所有人都使用WebKit?** -------------------- 并不是说这些渲染引擎不能在iOS上运行。把渲染引擎移植到iOS上可能需要一些努力,但我知道有些浏览器愿意投入这项工作,但遗憾的是他们不被允许这样做。 现实情况是,App Store中的应用程序需要经过苹果公司的审查和批准,并根据App Store审查指南。 > 2.5.6浏览网页的应用程序必须使用适当的WebKit框架和WebKit Javascript。 而这就是最终的结果。苹果要求浏览器使用WebKit。事实上,它必须使用系统提供的WebKit框架。即使WebKit是开源的,你也不能修改或改进该版本并在你的应用程序中使用。NO ![E-lrUMVVkAAQCzp.jpeg][2] **伟大的均衡器:系统WebView** -------------------- 但是,你怎么能使用那一个授权的WebKit版本呢?有一个框架可以解决这个问题。苹果公司提供了一个WebView,它允许应用程序以相对较少的努力将WebKit嵌入到你的应用程序中。你向该框架提供一个配置对象,并需要处理它向你发送的一些事件。WebKit会处理所有实际的加载、解析和渲染工作。你的应用程序根本不需要担心这个问题。你所需要做的就是提供一个友好的用户界面,也许还可以与你的生态系统整合。例如,与你的桌面版浏览器共享书签。 而这恰恰是其他浏览器制造商愿意首先为这些乱七八糟的事情费心的原因。他们不关心在iOS上制作一个伟大的浏览器,而是更关心让他们的现有用户在iOS上挖掘他们的现有生态系统。 你在Windows上使用Edge吗?没问题,你可以在iOS上下载Edge,你所有的密码、书签和标签都在那里。生态系统的整合,宝贝! 虽然这听起来很好,但它也把浏览器降低到了同一事物之上的不同用户界面而已。 **这有什么关系呢?** ------------ 浏览器最重要的东西是渲染引擎。用户界面只是为了使用浏览器而需要存在的东西,但它绝不能妨碍使用。 甚至苹果公司也认为,用户界面应该尽可能快地脱离你的视线,只要有可能。苹果在iOS 15测试版中对Safari浏览器的早期实验将这一理念做得有点过火,导致一些苹果专家如Marco Arment、Frederico Viticci和John Gruber等人提出了一些相当激烈的批评。但尽管如此,苹果是正确的,因为用户使用浏览器的主要原因是他们想浏览网页。 而这恰恰是iOS上其他浏览器无法创新的地方。他们必须使用与平台上所有其他浏览器相同的渲染引擎。 那么,你想使用的那个新的网络标准呢?除非苹果在WebKit中实现它。有一个导致问题的错误吗?等到苹果修复它并发布新版本的iOS。 这就是问题所在。 **标准支持和推动网络平台的发展** ------------------ 即使是我创建的网站,我也不会拿出一些HTML5测试的分数,告诉你Safari的得分比其他浏览器少。如果只是这样,那是因为这已经不再是事实。这个网站已经5年没有更新了,而Safari浏览器几乎支持5年前的所有网络标准。 问题要比这复杂得多。在苹果如何看待网络和其他浏览器如何看待网络之间存在着根本的区别。 而且,我们很容易回到关于谷歌不认真对待隐私的老套路,因为他们也是一家广告公司。而苹果只是卖硬件的。不,事实并非如此。 这同样适用于苹果希望从应用商店的收入中获得30%-15%的说法。而苹果的既得利益是使网络变得更糟,并迫使用户使用应用程序来代替。我完全不相信这一点。 **Safari和Chrome团队都希望使网络更安全,并努力改善网络。**但他们对网络应该是什么有不同的看法。 谷歌的重点是通过使网络更有能力来改善网络。要扩大网络的相关性,超越今天的可能性。这也意味着允许它与本地应用程序竞争,而安卓团队肯定不总是同意这一点。 Safari似乎专注于改进目前的网络。让它成为一个更安全的地方,更快,更漂亮。如果你想要更多的东西,你可以使用一个应用程序。 我并不是说苹果的做法是错误的。苹果正在做的事情也很重要,我为苹果在改善网络隐私方面所做的工作喝彩。 但它不能成为唯一的优先事项。试想一下,如果每个浏览器在20年前都采取这种方法,网络会是什么样子。 事实上,不,不要想象这一切。只要回想一下Internet Explorer 6;这就是20年前网络的模样。我并不是说Internet Explorer 6是一个糟糕的浏览器。它在2001年是一个伟大的浏览器。但就像IE6一样,如果你停止创新,你就会落后。而这也是IE浏览器衰落的开始。其他浏览器确实进行了创新,变得更好,而IE浏览器变得无关紧要。尽管微软多年来一直在努力追赶,甚至用Edge取代了该浏览器,但最终还是失败了,Edge现在使用Chromium作为渲染引擎。 在过去的20年里,经过大量的努力和创新才有了今天的局面:新的API,新的标准,新的功能。具有讽刺意味的是,对更有能力的网络的大量推动最初来自于Safari和WebKit渲染引擎。WebKit是一个新秀,它颠覆了一切,为平台增加了许多有用的新功能。 但时代已经变了。Safari已经落后了,并且在努力跟上网络平台的发展方向。我说的不是一些只有Chromium实现的奇特功能。即使是其他浏览器中适当的标准和广泛支持的功能,也需要几年时间才能在Safari中出现。 在网络开发者中流传的一句话是 "Safari是新的IE"。可悲的是,它已经存在了相当长的一段时间。 不幸的是,与IE的情况不同,用户不能简单地选择使用其他浏览器。在iOS上就不行。好吧,他们可以,但正如我们刚刚看到的,他们只是伪装的Safari。 因此,落后的不仅仅是一个浏览器。它是iOS上的所有浏览器。整个iOS上的网络都落后了。而iOS已经变得如此重要,以至于整个网络平台都因此而被拖后腿。 就像开发者对Internet Explorer 6感到沮丧,因为他们仍然不得不长期支持它一样,他们正在变得沮丧,因为他们必须支持Safari。 更令人沮丧的是苹果公司最近发表的一些声明。在诉讼和监管机构的压力下,苹果公司为App Store的封闭性进行辩护,说网络是构建原生应用程序的适当选择。你不必遵循App Store的规则,你也可以创建网络应用来代替。 只是,当读到这句话时,有点痛心,因为与此同时,他们对实施允许网络应用与原生应用竞争的功能不感兴趣。 **漫长的等待** --------- 不幸的是,对开发者来说,不仅仅是功能的缺失使事情变得复杂。令人沮丧的一个主要原因是,所有的小怪癖和错误似乎都会突然出现。 现在,我并不是说Safari比其他浏览器有更多的bug。每个浏览器都有错误。然而,当一个bug出现时,最重要的是这个问题如何迅速得到解决。而我要说的是,与其他浏览器相比,错误的修复需要更长的时间才能向用户推广。 以有关indexedDB的严重错误为例。BUG的技术细节并不重要,但时间线却很重要。这个错误是在5月24日发布的iOS 14.6中引入的。它在6月2日被报告,并很快被修复。到目前为止,一切都很好。然后,直到7月19日发布的iOS 14.7才向用户推出这个问题。在这期间,indexedDB在Safari浏览器中实际上是无法使用的,而你的客户正在抱怨你的网络应用被破坏了,你应该修复它。 任何其他浏览器都会立即发布一个错误修复。他们可以在几天内开始推出修复,而不是几周,因为他们的浏览器是独立于操作系统推出的。 但是,Safari或iOS上的任何其他浏览器却不是这样;相反,你必须等到该修复程序被纳入iOS版本,而且根据该版本的进展情况,它甚至可能无法进入即将发布的版本。你甚至不知道它是否会被包括在内,因为 "苹果不对未来的版本发表评论"。 这些问题的根源不在于Safari团队。我敢肯定,他们很想早点发货修复。这是一个关于iOS平台的问题。但话虽如此,对于Safari和iOS上的其他浏览器来说,这仍然是一个问题。 **所有的浏览器都是平等的,但有些更平等** ---------------------- 在这篇文章的开头,我提到Safari也使用WebKit。而这是事实。但Safari与其他浏览器的最大区别在于,Safari可以在用户界面和渲染引擎上自由竞争。如果他们想实现一个新的标准或功能,他们可以自由地这样做。而其他浏览器必须等待,看苹果是否以及何时实现某个特定的功能,苹果可以在任何时候添加他们想要的东西。这不是公平竞争。 而且,情况变得更糟。系统WebView和Safari之间在标准支持方面存在差异。有时功能首先在Safari中实现,只是在一两个版本之后才出现在WebView中。 最近,有一个基于网络的视频通信的问题。一个允许浏览器访问手机前置摄像头的网络标准在Safari中被支持了一段时间,但在WebView中却没有。因此,如果你想使用任何形式的基于网络的视频聊天,你必须使用Safari。从iOS 14.5开始,这个问题已经得到解决。 几年前一个更著名的例子是,苹果拒绝允许第三方浏览器使用他们更快的Nitro引擎来运行JavaScript。这涉及到一些真正的安全问题,因为在当时,WebView与应用程序在同一进程中运行,允许Nitro就意味着允许应用程序运行任意代码。这是iOS上的一个大忌。但当然,Safari并没有这些限制。最后,他们用一个全新的WebView取代了旧的WebView,在它自己的进程中运行渲染引擎,完全避免了这个问题。 他们幸运地解决了这两个问题。所以对他们和依赖这些功能的浏览器来说都是好事。此外,Safari团队有看似合理的理由不把这些特定的功能推广到WebView中,直到他们能够正确地做到这一点。 有些功能可能与Safari应用或苹果生态系统严重整合。因此,将该功能也推广到WebView中是没有意义的。 但无论如何,苹果不受自己的规则约束,可以自由创新,而其他公司则不能。 iOS上的所有浏览器都是平等的,但Safari更平等。 **那么,其他浏览器可以做什么呢?** ------------------- 浏览器可以做两件事来解决这个问题。不幸的是,这两件事从一开始就注定要失败。 正如我提到的,WebKit是开源的,其他浏览器制造商可以投入时间和金钱来实现他们自己想要的功能。而如果该功能被接受并符合苹果对网络的愿景,那么它很有可能被包含在Safari的下一个版本中--无论何时都是如此。 问题是,这就把改进Safari的责任推给了其他浏览器。这不是现实世界的运作方式。 而且,即使有一个拥有大量资金的大浏览器供应商选择了一个团队,也不能保证苹果会在Safari中搭载该功能。即使在今天,WebKit也被多方使用和开发,因此,WebKit支持很多Safari中没有的功能。 而我的意思并不是说他们会因为怨恨或由于没有发明这里的综合症而忽视这些贡献。但这是因为他们对网络平台有不同的看法。 **假装它,直到你打破它** -------------- 有一件事可能会起作用,那就是不要再从WebKit那里寻找解决方案,而是从WebView本身寻找。浏览器可以在WebView中插入JavaScript,而该JavaScript可以向浏览器应用程序发送消息。这有点麻烦,但你可以创建一个polyfill,在页面加载时自动插入,假装该功能被支持。该填充器甚至可以与浏览器应用程序对话,并告诉它在该功能需要时执行本地代码。 这就是Cordova和Capacitor应用程序的工作方式。他们运行一个WebView,并提供API,与应用程序的本地端对话,以支持浏览器通常不会支持的功能。浏览器也可以使用这种技术。 而且这不仅仅是一个理论。在苹果在Safari浏览器中支持PaymentRequest之前,Chrome浏览器就使用这种方式在iOS上提供了PaymentRequest支持。在App Store中甚至还有一些特定功能的浏览器提供WebBluetooth或WebMidi支持。 但正如我所说。它是黑客式的,随时都有可能出现故障。而且有些功能是不能被聚满的。 当然,作为一个用户,我很希望浏览器能更多地使用这种技术,将新的网络平台功能带到iOS。但我理解为什么浏览器会对这样做犹豫不决。 **黯淡的前景** --------- 那么,解决这些问题的真正办法是什么?我们如何让浏览器不仅在外观上竞争,而且在网络平台功能上竞争? 只有一个合适的解决方案。苹果需要向使用其他渲染引擎的浏览器开放他们的应用程序商店。废除2.5.6条规则,允许其他浏览器在iOS上使用,让它们真正地竞争。尽管苹果已经被迫在一些应用商店的规则上做出妥协,但我对这种情况的发生不抱希望。 而这也是我认为市场监管机构需要研究这个问题的原因。苹果声称网络是App Store的适当替代品,所以监管机构应该接受他们的说法,并确保它成为事实。 [1]: http://guobacai.com/usr/uploads/2021/11/3947465343.jpg [2]: http://guobacai.com/usr/uploads/2021/11/3215378551.jpeg 标签: Chrome, safari, Edge, firefox, 浏览器, webview
评论已关闭