116

2015 年,Google 推出了一种为 Android 开发网络应用的新方法:渐进式网络应用。可以创建一个看起来像本机应用程序的应用程序,能够使用设备的硬件(如相机和加速度计)、接收推送通知、拥有启动器图标、离线工作、存​​储本地数据等。

在 Android 上,原生应用程序提供哪些渐进式 Web 应用程序不支持的功能,反之亦然。

4

2 回答 2

210

TL;DR - 截至 2017 年 2 月,Progressive Web Apps 是一个足够强大的平台,Twitter 已将其所有移动网络流量转移到 React PWA

截至 2016 年 8 月,Progressive Web Apps 实际上提供了比通常想象的更多的硬件访问权限。这是我在 Android 上稳定版 Chrome 52中whatwebcando.today的屏幕截图:

当今 Web 可以做什么 - Android 上的 Chrome 52

硬件访问包括

即将到来的硬件访问

这些功能正在或已经在某些浏览器中运行:

另一个需要注意的重要一点是,Origin Trials Framework(在 Chrome 中实现)使制造商能够公开和测试硬件(或软件)功能,而无需经过标准化过程。例如,电话制造商可以公开一个用于读取压力传感器值的 API,对其进行改进,然后将其提交给 W3C 以供考虑。

除了硬件访问之外,还有一些传统上由本机应用程序使用的软件功能,现在可用于 Web 应用程序。

PWA 也可以使用的传统原生功能

这些功能涵盖了很多用例,现在许多流行的原生应用程序都可以重写为 PWA。以 Slack 为例。它的开源替代品Rocket.Chat 正在构建 PWA 版本。如需更多 PWA 演示,请参阅https://pwa.rocks

PWA 中的类原生功能

PWA 尚不可用的原生 Android 功能

  • 访问指纹传感器(开发中)
  • 联系人、日历和浏览器书签访问(无法访问这些可能会被注重隐私的用户视为一项功能)
  • 警报
  • 电话功能 - 拦截短信或电话、发送短信/彩信、获取用户的电话号码、阅读语音邮件、在没有拨号器对话框的情况下拨打电话
  • 对某些硬件功能和传感器的低级访问:手电筒、大气压力传感器
  • 系统访问:任务管理、修改系统设置、日志

渐进式 Web 应用程序提供原生应用程序缺乏的功能

  • 可发现性 - 搜索引擎可以轻松找到渐进式 Web 应用程序中的内容,但像 StackOverflow 这样以内容为中心的原生应用程序不会显示在应用商店搜索结果中它确实提供访问权限的内容,例如“pwa 与原生”。对于像 Reddit 这样的社区来说,这是一个问题,它们不能将其众多的子社区作为单独的“应用程序”公开给应用商店。
  • 可链接性- 任何页面/屏幕都可以有直接链接,可以轻松共享
  • 可书签性- 保存该链接以直接访问应用程序的视图
  • 始终新鲜——无需通过应用商店推送更新
  • 普遍访问- 不受应用商店有时任意政策或(意外)地理限制的约束
  • 大量数据节省,在互联网访问昂贵和/或缓慢的新兴市场中极为重要。例如,电子商务网站 Konga通过迁移到 PWA 将首次加载的数据使用量减少了 92%
  • 分发摩擦小- 如果您的渐进式网络应用程序在线,Android(和其他移动)用户已经可以访问它。

最后说明:PWA 使用相同的代码库在桌面和大多数移动设备上运行。在桌面环境(ChromeOS,以及后来的 Mac 和 Windows)上,它们的启动方式与其他应用程序相同,并在常规应用程序窗口中运行(无浏览器选项卡)。

于 2016-08-18T21:28:53.267 回答
12

本机应用程序的主要优点是它们可以访问平台可以提供的所有本机 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 的示例(或多或少成功)。

于 2016-02-26T10:52:54.077 回答