专栏首页京程一灯苹果拒绝支持PWA的行为对Web贻害无穷!

苹果拒绝支持PWA的行为对Web贻害无穷!

翻译:疯狂的技术宅 作者:Greg Blass 说明:本文是美国的资深开发者 Greg Blass 针对对苹果公司的激烈吐槽,原文需要科学访问。 英文原文:https://medium.com/philly-dev-shop/apples-refusal-to-support-progressive-web-apps-is-a-serious-detriment-to-future-of-the-web-e81b2be29676?from=timeline&isappinstalled=0

苹果移动端 Safari 就是新的 Internet Explorer

渐进式Web应用(Progressive Web Applications,简称 PWAs)是迄今为止在Web开发中最令人兴奋的创新技术之一。PWA 使你可以用 JavaScript 来创建一个“Service Worker”,它为你提供与原生应用相关联的各种功能,例如推送通知,离线支持和应用的加载屏幕 —— 这一切可都是基于Web的!这真是极好的。

不过还有一个主要问题 —— 虽然谷歌已经接受并在 Android 版的 Chrome 浏览器添加了这一技术的支持,但是 Apple 却放弃了在 iOS 端的 Safari 浏览器中提供支持。他们所做的只是说“在考虑之中”,但是看上去却没有任何动作。

我一直在等待他们对PWA的支持,但是到目前为止一切都没有发生。由于人生苦短,我一直在学习React Native,这一点咱们稍后再说。

为什么原生应用是…在劫难逃的?!

昨天我读了一篇特别大胆而且直言不讳的文章( https://medium.com/javascript-scene/native-apps-are-doomed-ac397148a2c0 )。在这篇文章中,作者陈述:

从现在起,我将不再编写任何原生应用程序。我所有的应用都将会是渐进式 Web 应用。渐进式 Web 应用就是 Web 应用,一种在移动设备上比原生应用能够无缝工作的Web应用。

我立刻想到,“既然他做出了如此大胆的声明,那么不用iOS吗,甚至永远也不会用?”

目前 Android 占有全球移动操作系统市场 86% 的份额。( 地址: https://techcrunch.com/2016/08/18/gartner-androids-smartphone-marketshare-hit-86-2-in-q2/ )

这是一个很高的比例,但前提是你要为全球市场开发应用程序——至少我不是,而且大多数美国人可能也不是这样的。这个数字很可能是由于人口众多的国家或贫困率较高的国家而造成的。

最近完成的一个应用是为美国内科和消费者报告委员会开发的。我们对医生们进行了统计,其中80%以上的人使用iOS,大约45%的人说,离线支持对他们来说是有用的,因为他们在的办公室里没有可靠的无线连接。我本来很想开发一个PWA,但是由于这种使用iOS的比例,导致不可行,所以我们就React Native(这是一个了不起的决定)。

谷歌的PWA基线是一个笑话

我最近还在 stack overflow 看到一个帖子(地址: https://stackoverflow.com/questions/41185471/what-is-progressive-web-app-solution-for-ios ),该帖还试图辩解苹果不支持PWA其实也并不那么糟糕。作者认为Google已经建立了一个PWA的基线清单,并且其中的许多功能在移动版的 Safari 上也是支持的:

  • 站点通过HTTPS提供服务
  • 页面对平板电脑和移动设备的响应
  • 起始网址在离线时加载(实际上在iOS上做不到)
  • 提供添加到主屏幕的元数据
  • 首次加载很快甚至在3G环境
  • 网站跨浏览器
  • 页面过渡不会被网络阻塞
  • 每个页面都有一个URL

这是认真的吗? 这不是在定义一个渐进式 Web 应用。这是定义一个标准的响应式 Web 应用,这在在相当长的时间里已经可行了。

Service workers 可以使你在PWA配合下做出所有令人惊叹和激动人心的事情,由于移动版 Safari 缺乏对他们的支持,有效地干掉了PWA为一半美国用户工作的能力——这反过来又扼杀了他们统一的可能性。

以下功能是你无法在移动版 safari 上做的事情,因为苹果拒绝支持它们:

  • 创建应用程序加载屏幕
  • 使用推送通知
  • 添加离线支持
  • 创建一个初始的应用程序UI来实现即时加载
  • 通过浏览器引导对话框,提示安装到主屏幕

苹果的“全屏”模式充满了漏洞

我尽可能地在试着在移动端 safari 中推广苹果的“类原生”体验——但它有一些严重的漏洞,而苹果公司根本不关心它们。他们不但忽略了我的bug报告(在我提交它们的几个月内都没有任何回复,并被标记为“重复”),并且忽略了公共开发者论坛上所有关于它们的帖子。

我在移动版 Safari 的“全屏”或“Web应用”模式中发现的一些bug包括:

  • 加载屏幕不起作用(及其恶劣——已经超过18000的点击量,没有得到苹果的回应。地址:https://forums.developer.apple.com/thread/23924 )。
  • 固定标题闪烁(我最大的心病,这就是为什么我最终在自己的产品上( brewlog.com )禁用它的原因)
  • 在 300ms 延迟后终于从移动版 Safari 中移除,却没有在全屏模式下移除(Apple没有回应。地址: https://forums.developer.apple.com/thread/43415 )

我永远不会忘记自己是怎样花费大量的时间来实现这些特性,这些特性被清楚地记录下来(现在仍然如此 地址: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html),直到最后才意识到它们实际上并没有在iOS的后续版本中起作用。

苹果在开发者论坛上的回应?毛也没有!文字版的无线电静默。这是我在处理早期版本的IE浏览器之后遇到的最令人沮丧的事情之一。 而且很容易找出原因:

苹果对待Web应用就像二等公民一样,因为它们不会在 app store 中像原生应用那样赚钱

必须明确告诉用户如何将你的应用程序添加到主屏幕上,这是一件可怕的事情。事实上,在做了几次之后,我就放弃了,因为这让你的应用看起来更像一个品质低劣的产品。

Cordova 怎么样?

你觉得呢?我对它从不感冒。这感觉就像是把我的应用运行在一个 webview/native 包装器上一样。我曾经尝试学习并使用 Ionic/Angular,但始终对它没有什么感觉。当看到那些在 Ionic 生态体系中花费时间的开发公司时,我觉得他们可能搭错了车。(说句良心话, 在几年前还没有 React Native 这个选择)

一旦引入了一个包装器,你仍然需要通过 app store发布自己的应用。你仍然需要参与苹果的游戏,需要支付100美元才能进入苹果应用商店,还包括30%的税——然而你仍然只只是运行在webview中。

React Native 来救急

不过,你还有另外一种选择,这是一个令人惊喜的选择,来自于 Facebook 的工程师们:React Native。

作为一个开发人员,你要做的最重要的事情之一就是:决定把自己的时间用在哪里,所以在这里我就不建议你学 React Native 了。不过它已经为我带来了许多新的职业机会,还有与聪明和成功人士交谈的机会。

在最近的6个月里,我一直在为了完成最近这个客户的项目(地址: https://itunes.apple.com/us/app/choosing-wisely/id1261156577 )而学习并使用它,这绝对是不可思议的。学习 Angular 的感觉就像是我在与语言抗争,而 React 却使我能够立即上手。我还从来没有这么兴奋过……嗯,实际上,也从来没有过,而且支撑它的社区真的很棒。navigation 是流畅的,和原生的意义,整个应用的感觉就像一个真正的iOS应用——因为它是一个整体。

我认为,将来我们将会看到 PWA 和 React Native 都会有很好的发展前景。

苹果的方式

苹果认为你应该学习一种完全不同和更复杂的编程语言(Objective-C / Swift),并为iOS维护完全独立的代码库。这实际上伤害了小型开发商,扼杀了创新,使创业公司的更加难走。

初创公司和小型开发商应该集中精力学习苹果特有的编程语言,忽视(或最好延迟)Android版本的发布,这种毫无底线的想法简直是荒谬至极。

需要说明的是,即使是我刚刚发泄完之后 —— 我并不是反苹果的一切。我每天都会使用iPhone并且在 MacBook Pro 上开发。我仍然认为实用他们的产品是一种享受,永远也不会回到使用 PC/Windows 的状态。

我也并不认为大多数的苹果公司员工都在故意忽视这一点:

可能会有一些高层或董事会成员告诉大家,不要把时间浪费在不符合应用商店盈利模式的技术上。

这仅仅是资本主义特色吗?只是谋求他们自己的好处吗?不!苹果是最最肮脏的(地址: https://www.theguardian.com/technology/2017/may/10/apple-becomes-first-company-worth-800bn )。我还没有看到苹果对这篇文章的任何回应,我甚至怀疑它会很快发生。这篇文章不会改变他们的想法,但我希望它能鼓励人们讨论这个话题,并能够帮助传播。

但有一件事是肯定的:我们不能一跳上PWA的火车,就把原生应用完全仍在脑后。还记得我们把这种行为称作什么吗——这对Web贻害无穷。


本文分享自微信公众号 - 京程一灯(jingchengyideng),作者:疯狂的技术宅

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 值得关注的 Vue.js开源项目[每日前端夜话0xFF]

    Vue.js 框架是由经验丰富的开发人员创建的,具有可靠的社区支持,丰富的功能,而且是轻量级的。

    疯狂的技术宅
  • 一些知名网站的 404 页面

    疯狂的技术宅
  • JS判断单、多张图片加载完成

    在实际的运用中有这样一种场景,某资源加载完成后再执行某个操作,例如在做导出时,后端通过打开模板页生成PDF,并返回下载地址。这时前后端通常需要约定一个flag,...

    疯狂的技术宅
  • Asp中如何设计跨越域的Cookie

    Cookie简介   首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie。   Cookie是存储在客户端计算机中的一个小文件...

    脑洞的蜂蜜
  • Android P新增检测项 应用热修复受重大影响

    最近关于热修复崩溃在Android P 版本的内容持续增高,也许这个commit可以帮到你.

    Anymarvel
  • 算法学习笔记(二):贪心算法

    free赖权华
  • 因果图在运维工作中的应用

    因果图在运维工作中的应用 目录 1. 什么是因果图 2. 为什么使用因果图 3. 何时使用因果图 4. 何处使用因果图 5. 谁来负责制作因果图 6. 怎样使用...

    netkiller old
  • 因果图在运维工作中的应用

    因果图在运维工作中的应用 目录 1. 什么是因果图 2. 为什么使用因果图 3. 何时使用因果图 4. 何处使用因果图 5. 谁来负责制作因果图 6. 怎样使用...

    netkiller old
  • 【大咖说】工信部副部长:工业互联网成制造业转型关键

    导读:在第十六届中国经济论坛上,工信部副部长陈肇雄指出,当前我国经济传统动力衰减,制造业供给结构错配问题也日益凸显,急需利用网络化、信息化手段加快推动制造业结...

    钱塘数据
  • 5G时代来临,前端开发工程师必须了解的音视频入门基础知识

    本文将给大家进行音视频基础的常规知识点的梳理。当然,短短的一篇文章并不能让大家立即变成音视频领域的专家,但这些知识点已经基本涵盖了音视频的入门知识。我们将按照下...

    IMWeb前端团队

扫码关注云+社区

领取腾讯云代金券