Progressive Web Apps和原生应用程序在Android上有哪些特点区别,以及相反的情况

117
2015年,谷歌推出了一种新的Android Web应用程序开发方法:渐进式网络应用程序。可以创建一个看起来像原生应用程序的应用程序,能够使用设备的硬件如相机和加速计,接收推送通知,有一个启动器图标,在离线状态下工作,存储本地数据等等。
在Android上,原生应用程序提供哪些渐进式Web应用程序不支持的功能,反之亦然。
2个回答

213
作为2017年2月的一个重要进展,渐进式Web应用程序已经成为一个非常强大的平台,Twitter已经将其所有移动Web流量转移到React PWA上
截至2016年8月,渐进式Web应用程序实际上比人们通常想象的更具有硬件访问权限。以下是我在Android上使用Chrome 52稳定版所截取的whatwebcando.today的屏幕截图:

What Web Can Do Today - Chrome 52 on Android

硬件访问包括

即将推出的硬件访问

这些功能正在被实现或已经在某些浏览器中工作:

请注意,原型试验框架(在Chrome中实现)是一个重要的点,它使制造商能够在不必经过标准化过程的情况下公开和测试硬件(或软件)功能。例如,手机制造商可以公开用于读取压力传感器值的API,进行改进,然后提交给W3C考虑。
除了硬件访问之外,还有一些传统上由本机应用程序使用的软件功能现在也可用于Web应用程序。

PWA也可以使用的传统本机功能

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

PWA即将推出类似本地应用程序的功能

尚未提供给PWA的Native Android功能

  • 指纹传感器的访问权限(正在开发中
  • 联系人、日历和浏览器书签的访问权限(对于注重隐私的用户来说,缺少这些访问权限可能被视为一种功能
  • 闹钟
  • 电话功能 - 拦截短信或电话,发送短信/彩信,获取用户的电话号码,读取语音邮件,无需拨号器对话框即可进行电话呼叫
  • 对某些硬件功能和传感器的低级访问权限:手电筒,大气压力传感器
  • 系统访问权限:任务管理,修改系统设置,日志

渐进式Web应用程序提供本地应用程序缺乏的功能

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

最后提示:PWA可以在桌面端和大多数移动设备上使用相同的代码库运行。在桌面环境(ChromeOS以及稍后的Mac和Windows)中,它们与其他应用程序以相同的方式启动,并在常规应用程序窗口中运行(不是浏览器标签页)。


1
一个小提示:通过“Android即时应用程序”,你可以说原生应用程序(至少在Android上)不再缺乏可链接性。 - shawnjan
很好的回答,丹!PWA有办法访问主机设备的电话号码吗? - Alexander Mills
@Alexander:不行(请看“电话功能”项目符号),因为这将侵犯隐私。考虑使用自动填充代替。 - Dan Dascalescu
https://github.com/react-native-community/react-native-camera/issues/2478 - Fabrizio Bertoglio

13
主要优势在于原生应用程序可以访问平台提供的所有本地API(联系人、相机闪光灯、短信、电话、网络、蓝牙、传感器、原始套接字等),而渐进式Web应用程序不能(尚未)因为它们受到标准Web功能的限制。
渐进式Web应用程序的目标是扩展这些功能以涵盖最关键的情况。在这种心境下,请查看Progressive Web Apps: Escaping Tabs Without Loosing Our Soul,其中您可以找到渐进式Web应用程序应该提供的列表。
  • 响应式: 适配任何形态因子
  • 独立性连接: 通过服务工作者逐步增强,让它们离线工作
  • 类应用程序交互: 采用Shell +内容应用程序模型创建应用程序导航和交互
  • 新鲜: 由于服务工作者更新过程的透明性总是最新的
  • 安全: 通过TLS提供(服务工作者要求),以防止窥探
  • 可发现性: 由于W3C清单和服务工作者注册范围使其可识别为“应用程序”,允许搜索引擎找到它们
  • 可重新参与: 可以访问操作系统的重新参与UI;例如推送通知
  • 可安装: 通过浏览器提供的提示安装到主屏幕,允许用户“保留”他们认为最有用的应用程序,而不必费心去应用商店下载
  • 可链接: 意味着它们是零摩擦、零安装和易于共享的。URL的社交力量很重要。

从这些要点中,可链接性是原生应用程序从开放网络导入的第一个特征,以移动深度链接的形式呈现。

但特别值得一提的是组合词“新鲜”+“可安装”,因为它代表了Web作为平台相对于本地应用程序的主要优势之一。这里的“可安装”意味着它会出现在您的主屏幕上。这并不意味着您需要经历下载和安装阶段。你打开一个URL或者在浏览时发现一个服务,就完成了:它会出现在你的主屏幕上
“新鲜”指的是常规Web的工作方式,提供即时加载和无缝更新。你不需要从YouTube的Web上安装更新,它已经被部署了,下次访问时你就可以使用它了。
我没有谈论其余点的好处,因为你问的是差异,例如重新参与是本地应用程序已经通过推送服务和通知实现的,现在Web应用程序也已经赶上了。

另一个相关且关键的问题是,哪个平台更适合您的需求。如果您没有访问特殊的硬件功能,Web 应该足够了。选择 Web,您可以摆脱市场、专有生态系统,并且可以确保某种程度的普及性和互操作性。

最后,我建议您使用 Chrome 手机浏览 www.flipkart.com。它非常棒:没有漏洞,导航流畅,感觉像应用程序。离线状态下,它仍然可以正常工作。这是真实世界中那篇文章的一个很好的例子。将应用添加到主屏幕,下次打开时体验会更好。

您还可以查看 Firefox OS,它是将 更多平台 API 带到标准 Web 的一个例子(成功与否不一定)。


渐进式 Web 应用程序实际上可以访问相机以及多个传感器 - Dan Dascalescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接