在 Android 上,Progressive Web Apps 与本机应用程序相比有哪些功能,反之亦然

What features do Progressive Web Apps have vs. native apps and vice-versa, on Android

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

在 Android 上,本机应用提供了哪些渐进式网络应用不支持的功能,反之亦然。

本机应用程序的主要优势是它们可以访问平台可以提供的所有本机 API(联系人、相机闪光灯、SMS、电话、网络、蓝牙、传感器、原始套接字...),而渐进式 Web 应用程序不能(还)因为它们受到标准 Web 功能的限制。

渐进式 Web 应用程序的目标是扩展这些功能以涵盖最关键的情况。在这种情况下,看看 Progressive Web Apps: Escaping Tabs Without Loosing Our Soul,您可以在其中找到渐进式 Web 应用程序应提供的列表:

  • Responsive: to fit any form factor
  • Connectivity independent: Progressively-enhanced with Service Workers to let them work offline
  • App-like-interactions: Adopt a Shell + Content application model to create appy navigations & interactions
  • Fresh: Transparently always up-to-date thanks to the Service Worker update process
  • Safe: Served via TLS (a Service Worker requirement) to prevent snooping
  • Discoverable: Are identifiable as “applications” thanks to W3C Manifests and Service Worker registration scope allowing search engines to find them
  • Re-engageable: Can access the re-engagement UIs of the OS; e.g. Push Notifications
  • Installable: to the home screen through browser-provided prompts, allowing users to “keep” apps they find most useful without the hassle of an app store
  • Linkable: meaning they’re zero-friction, zero-install, and easy to share. The social power of URLs matters.

从这些方面来看,可链接 是本机应用程序以 mobile deep linking.

的形式从开放 Web 导入的首批特征之一

但特别值得一提的是组合 fresh + installable 因为它代表了 Web 作为平台相对于原生 替代品。这里 installable 表示它出现在您的主屏幕中。这并不意味着您需要通过下载和安装阶段。您在浏览时打开 URL 或发现一项服务并完成:it appears in your home screen.

Fresh 指的是常规网络的工作方式,提供即时加载和无缝更新。系统不会要求您从 YouTube 网络安装更新,它已部署并在您下次访问时使用它。

我不是在谈论剩余点的好处,因为你问的是差异,例如,重新参与是本机应用程序已经通过推送服务和通知拥有的东西,现在网络应用程序已经赶上了.

其他相关且关键的问题是关于哪个平台更适合您的需求。如果您没有访问特殊的硬件功能,Web 应该就足够了,选择 Web 可以让您摆脱市场、专有生态系统的束缚,顺便说一下,您可以确保一定程度的普遍性和 互操作性.

最后,我建议您使用 Chrome 手机浏览 www.flipkart.com。它非常棒:没有错误、流畅的导航、类似应用程序的感觉。离线,它将继续工作。一个真实的例子 post。将应用程序添加到主屏幕,下次打开时体验更佳。

您可以查看 Firefox OS as well as an example of bringing more platform APIs 标准 Web(或多或少会成功)。

TL;DR - 截至 2017 年 2 月,Progressive Web Apps 是一个足够强大的平台 Twitter has moved all of their mobile web traffic to a React PWA

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

硬件访问包括

即将访问硬件

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

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

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

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

这些功能涵盖了很多用例,现在很多流行的原生应用程序都可以重写为 PWA。以 Slack 为例。它的开源替代品 Rocket.Chat, is building a PWA version. For more PWA demos, see https://pwa.rocks.

PWA 中类似原生的功能

Native Android features PWA 尚不可用

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

Progressive Web Apps 提供原生应用程序所缺乏的功能

  • 可发现性 - 搜索引擎可以轻松找到渐进式网络应用程序中的内容,但像 Whosebug 这样以内容为中心的本机应用程序不会在应用程序商店搜索结果中显示那些内容它确实提供访问权限,例如 "pwa vs. native"。对于像 Reddit 这样的社区来说,这是一个问题,它们无法将其众多的子社区作为个人 "apps".
  • 公开给应用商店
  • link能力 - 任何page/screen都可以直接link,可以轻松分享
  • 书签能力 - 保存 link 以直接访问应用的视图
  • 永远新鲜 - 无需通过应用商店推送更新
  • 通用访问 - 不受应用商店限制sometimes arbitrary policies or (unintended) geographic restrictions
  • 大量数据节省,在互联网接入昂贵and/or缓慢的新兴市场中极为重要。比如电商网站Konga cut data usage by 92% for the first load by migrating to a PWA.
  • 分发阻力小 - 如果您的渐进式 Web 应用程序在线,则 Android(和其他移动)用户已经可以访问它。

最后说明:PWA 运行,具有相同的代码库,适用于桌面和大多数移动设备。在桌面环境中(ChromeOS、later、Mac 和 Windows),它们的启动方式与其他应用程序相同,运行 在常规应用程序中 window(无浏览器选项卡)。