作者: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,这一点咱们稍后再说。

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

昨天我阅读了一篇特别大胆而且直言不讳的文章。在这篇文章中,作者陈述:

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

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

目前 Android 占有全球移动操作系统市场 86% 的份额。

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

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

谷歌的PWA基线是一个笑话

我最近还在 stack overflow 看到一个帖子,该帖还试图声称苹果不支持PWA其实也并不那么糟糕。作者认为Google已经建立了一个PWA的基线清单,并且其中的许多功能在移动版的 Safari 上也是支持的:

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

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

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

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

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

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

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

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

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

我永远不会忘记自己是怎样花费大量的时间来实现这些特性,这些特性被清楚地记录下来(现在仍然如此,直到最后才意识到它们实际上并没有在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个月里,我一直在为了完成最近这个客户的项目而学习并使用它,这绝对是不可思议的。学习 Angular 的感觉就像是我在与语言抗争,而 React 却使我能够立即上手。我还从来没有这么兴奋过……嗯,实际上,也从来没有过,而且支撑它的社区真的很棒。navigation 是流畅的,和原生的意义,整个应用的感觉就像一个真正的iOS应用——因为它是一个整体。

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

苹果的方式

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

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

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

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

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

这仅仅是资本主义特色吗?只是谋求他们自己的好处吗?不!苹果是最最肮脏的。我还没有看到苹果对这篇文章的任何回应,我甚至怀疑它会很快发生。这篇文章不会改变他们的想法,但我希望它能鼓励人们讨论这个话题,并能够帮助传播。

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

* 欢迎扫描二维码关注公众号,每天推送我翻译的技术文章。*

苹果拒绝支持PWA,有损Web的未来相关推荐

  1. 渐进式Web应用(PWA)带来的未来前端思考

    渐进式Web应用(PWA)带来的未来前端思考 PWA的前世今生你了解吗?未来前端发展方向,你了解吗?纵观PC桌面端发展过程,从早期的Delphi/VB/VF/VC, 到Node Webkit,比如nw ...

  2. PWA(Progressive Web App)入门系列:(一)PWA简介

    前言 PWA做为一门Google推出的WEB端的新技术,好处不言而喻,但目前对于相关方面的知识不是很丰富,这里我推出一下这方面的入门教程系列,提供PWA方面学习. 什么是PWA PWA全称Progre ...

  3. Facebook:苹果谷歌支持HTML5会死啊

    Facebook一直都想把自己的HTML5移动网站做起来,这当然需要移动浏览器的支持,但由于利益关系,目前的两大移动浏览器开发商苹果和Google都拒绝支持Facebook. 据Facebook透露, ...

  4. PWA (Progressive Web App)

    PWA (Progressive Web App) 1.简介 是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生的功能,比如:通知推送 Js-to-Nati ...

  5. 与WebXR共同创建者Diego Marcos一起探讨沉浸式Web的未来(上)

    点击上方"LiveVideoStack"关注我们 翻译 | Alex 技术审校 | 刘连响 本文来自UploadVR,作者为David Heaney WebXR 影音探索 #005 ...

  6. 从 SPA 到 PWA:Web App的下一站在哪?

    从AJAX(Asynchronous JavaScript + XML,异步JavaScript和XML)开始, 尤其是 AngularJS 推出之后,SPA(Single Page App,单页应用 ...

  7. 乐视回应员工过着无内卷、无老板的神仙日子;苹果拒绝在俄罗斯存储用户iCloud数据;Dapr 1.8.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  8. 科技博主拆坏了 iMac Pro,苹果拒绝提供维修

    点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! 加拿大知名油管科技频道 Linus Tech Tips 的 Linus Sebastian ...

  9. iphone手机支持android,苹果AirTag支持哪些手机设备?AirTag安卓手机可以使用吗?...

    昨晚苹果AirTag防丢器的发布,对于喜欢丢三落四的小伙伴们来说是个不错的配件,这次的AirTag适用于配备 U1 芯片的 iPhone,也就是iPhone11和12的大部分的机型都是OK的,那么安卓 ...

最新文章

  1. poj3007(set的应用)
  2. CSS浮动、定位与z-index层叠等级详解——响应式Web系列学习笔记
  3. 我是如何将系统QPS从300提升到6000的
  4. python绘制混淆矩阵
  5. java 进销存源码_JAVA 进销存管理系统的源码 - 下载 - 搜珍网
  6. 蓝牙打印机CPCL编程手册~汉印HM-A300
  7. 微博相册图片获取工具
  8. 科学幻想其实是对科学研究的发展方向起到很好的引领作用
  9. 原生javascript实现拖拽改变table表格行高(html)
  10. 全网营销优势在于打造营销闭环,全网营销的经典营销方式推荐
  11. oracle调优 oracle培训
  12. davinci 达芬奇BI工具
  13. Spring -- 迈向Spring之路
  14. 闭环控制(自动控制理论)
  15. DRV8711的通用步进电机驱动器和直流电机驱动器
  16. hp服务器系统检测,HP服务器检测步骤-20210621132835.docx-原创力文档
  17. ProgeCAD 2009 Pro 9.0.26.6 (建筑CAD)iv.rar
  18. linux美国GE公司扫描机器,美国GE 反射内存卡
  19. PHP将带有下划线多元数组键值转为驼峰式
  20. STM32F0系列串口DMA收发数据

热门文章

  1. jaspersoft studio6.x 设计医院超声检查报告单
  2. 如何查看中科院2020期刊分区表?
  3. python难学吗-python自学难吗?
  4. 《人在影途》----2010摄影之家年会贺岁片
  5. 回顾光影先锋发展史(2)-佳能
  6. wordpress留言板comments.php添加自定义字段,wordpress怎么通过自定义栏目添加字段
  7. strict_strtoul函数找不到定义问题
  8. C语言ieee单精度浮点数转换,单精度浮点数转十进制方法
  9. 微信小程序(或uniapp)引入腾讯视频插件播放视频
  10. javascript/html 禁止图片缓存