2015 年,Google 推出了一种为 Android 开发网络应用的新方法:渐进式网络应用。可以创建一个看起来像本机应用程序的应用程序,能够使用设备的硬件(如相机和加速度计)、接收推送通知、拥有启动器图标、离线工作、存储本地数据等。
在 Android 上,原生应用程序提供哪些渐进式 Web 应用程序不支持的功能,反之亦然。
2015 年,Google 推出了一种为 Android 开发网络应用的新方法:渐进式网络应用。可以创建一个看起来像本机应用程序的应用程序,能够使用设备的硬件(如相机和加速度计)、接收推送通知、拥有启动器图标、离线工作、存储本地数据等。
在 Android 上,原生应用程序提供哪些渐进式 Web 应用程序不支持的功能,反之亦然。
TL;DR - 截至 2017 年 2 月,Progressive Web Apps 是一个足够强大的平台,Twitter 已将其所有移动网络流量转移到 React PWA。
截至 2016 年 8 月,Progressive Web Apps 实际上提供了比通常想象的更多的硬件访问权限。这是我在 Android 上稳定版 Chrome 52中whatwebcando.today的屏幕截图:
这些功能正在或已经在某些浏览器中运行:
另一个需要注意的重要一点是,Origin Trials Framework(在 Chrome 中实现)使制造商能够公开和测试硬件(或软件)功能,而无需经过标准化过程。例如,电话制造商可以公开一个用于读取压力传感器值的 API,对其进行改进,然后将其提交给 W3C 以供考虑。
除了硬件访问之外,还有一些传统上由本机应用程序使用的软件功能,现在可用于 Web 应用程序。
通过 HTML5 Canvas或WebGL进行硬件加速的 2D/3D 图形- 查看一些HTML5 Canvas 演示、WebGL 站点或three.js 库。Unity 跨平台游戏引擎的 2014 年基准比较了原生与 WebGL 渲染性能,并得出结论:
“最重要的收获是,虽然 WebGL 在某些领域仍然比原生代码慢得多,但总体而言,您已经可以期待非常不错的性能,而且这只会在未来变得更好。”
这些功能涵盖了很多用例,现在许多流行的原生应用程序都可以重写为 PWA。以 Slack 为例。它的开源替代品Rocket.Chat 正在构建 PWA 版本。如需更多 PWA 演示,请参阅https://pwa.rocks。
最后说明:PWA 使用相同的代码库在桌面和大多数移动设备上运行。在桌面环境(ChromeOS,以及后来的 Mac 和 Windows)上,它们的启动方式与其他应用程序相同,并在常规应用程序窗口中运行(无浏览器选项卡)。
本机应用程序的主要优点是它们可以访问平台可以提供的所有本机 API(联系人、相机闪光灯、SMS、电话、网络、蓝牙、传感器、原始套接字……),而渐进式 Web 应用程序(目前)不能因为它们受到标准 Web 功能的限制。
渐进式 Web 应用程序的目标是扩展这些功能以涵盖最关键的情况。怀着这种心情,看看Progressive Web Apps: Escaping Tabs without Loosing Our Soul在这里你可以找到一个渐进式 Web 应用程序应该提供的列表:
- 响应式:适合任何外形尺寸
- 独立于连接:通过 Service Worker 逐步增强,让他们离线工作
- App-like-interactions:采用 Shell + Content 应用程序模型来创建应用程序导航和交互
- 新鲜:由于 Service Worker 更新过程,透明地始终保持最新状态
- 安全:通过 TLS(Service Worker 要求)提供服务,以防止窥探
- 可发现:由于 W3C 清单和 Service Worker 注册范围允许搜索引擎找到它们,因此可以识别为“应用程序”
- 可重新参与:可以访问操作系统的重新参与 UI;例如推送通知
- 可安装:通过浏览器提供的提示到主屏幕,允许用户“保留”他们认为最有用的应用程序,而无需使用应用程序商店的麻烦
- 可链接:意味着它们是零摩擦、零安装且易于共享的。URL 的社会力量很重要。
从这些观点来看,可链接是本地应用程序以移动深度链接形式从开放 Web 导入的首批特征之一。
但特别值得一提的是全新+可安装组合,因为它代表了 Web 作为平台相对于原生替代品的主要优势之一。此处可安装意味着它出现在您的主屏幕中。这并不意味着您需要通过下载和安装阶段。您在浏览时打开一个 URL 或发现一项服务就完成了:它出现在您的主屏幕中。
新鲜是指常规网络的工作方式,提供即时加载和无缝更新。不会要求您从 YouTube 的网络安装更新,它已部署并且您在下次访问时使用它。
我不是在谈论其余点的好处,因为您要求的是差异,例如,重新参与是本机应用程序已经通过推送服务和通知拥有的东西,现在 Web 应用程序已经赶上了。
其他相关且关键的问题是哪个平台更适合您的需求。如果您没有访问特殊的硬件功能,那么 Web 就足够了,并且选择您从市场、专有生态系统中解放出来的 Web,顺便说一下,您可以确保一定程度的普遍性和互操作性。
最后,我建议您使用 Chrome 从手机上浏览www.flipkart.com 。非常棒:没有错误,导航流畅,类似应用程序的感觉。脱机,它将继续工作。该帖子的真实世界示例。将应用程序添加到主屏幕,下次打开时,体验会更好。
您可以查看Firefox OS以及将更多平台 API引入标准 Web 的示例(或多或少成功)。