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

时间:2016-02-19 11:27:27

标签: android google-chrome firefox progressive-web-apps

2015年,谷歌推出了一种开发Android网络应用的新方法:progressive web apps。可以创建一个看起来像本机应用程序的应用程序,可以使用设备的硬件,如摄像头和加速度计,接收推送通知,启动启动器图标,离线工作,存储本地数据等。

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

2 个答案:

答案 0 :(得分:182)

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 52上的Chrome 52稳定版中whatwebcando.today的屏幕截图:

What Web Can Do Today - Chrome 52 on Android

硬件访问包括

即将进行的硬件访问

这些功能正在实施或已在某些浏览器中使用:

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

除硬件访问外,还有传统上由原始应用程序使用的软件功能,现在可供网络应用程序使用。

PWA也可以使用

的传统原生功能

这些功能涵盖了很多用例,现在许多流行的原生应用都可以重写为PWA。以Slack为例。它的开源替代方案Rocket.Chat, is building a PWA version。有关更多PWA演示,请参阅https://pwa.rocks

来自PWA的类似本机的功能

Native Android features尚未提供给PWA

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

渐进式网络应用程序提供本机应用程序缺少的功能

  • 可发现性 - 搜索引擎可以轻松找到渐进式网络应用中的内容,但像StackOverflow这样以内容为中心的原生应用不会在应用商店搜索结果中显示其提供的内容访问,例如" pwa vs. native"。对于像Reddit这样的社区来说,这是一个问题,因为Reddit不能将他们众多的子社区作为个人" apps"来展示给应用商店。
  • 可链接性 - 任何页面/屏幕都可以有直接链接,可以轻松共享
  • 可识别性 - 保存该链接以直接访问应用的视图
  • 永远新鲜 - 无需通过应用商店推送更新
  • 通用访问 - 不受应用商店sometimes arbitrary policies或(非预期)geographic restrictions
  • 的约束
  • 大量数据节省,在新兴市场中极为重要,因为互联网访问费用昂贵和/或速度较慢。例如,电子商务网站Konga cut data usage by 92% for the first load by migrating to a PWA
  • 分销的低摩擦力 - 如果您的累进式网络应用程序在线,则Android(和其他移动)用户已经可以访问它。

最后注意事项:PWA在桌面和大多数移动设备上以相同的代码库运行。在桌面环境(ChromeOS和later Mac和Windows)上,它们以与其他应用相同的方式启动,并在常规应用窗口(无浏览器标签)中运行。

答案 1 :(得分:12)

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

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

  
      
  • 响应:适合任何形式因素
  •   
  • 独立于连接:与服务工作者一起逐步增强,让他们脱机工作
  •   
  • 类似App的交互:采用Shell + Content应用程序模型来创建appy navigations&相互作用
  •   
  • 新鲜:由于服务工作者更新过程,透明地始终保持最新状态
  •   
  • 安全:通过TLS(服务工作者要求)提供服务以防止窥探
  •   
  • 可发现:由于W3C清单和服务工作者注册范围允许搜索引擎找到它们,可以识别为“应用程序”
  •   
  • 可重新参与:可以访问操作系统的重新参与UI;例如推送通知
  •   
  • 可安装:通过浏览器提供的提示进入主屏幕,允许用户“保留”他们认为最有用的应用,而不会有应用商店的麻烦
  •   
  • 可链接:意味着它们是零摩擦,零安装且易于共享。网址的社交能力很重要。
  •   

从这些观点来看, linkable 是以mobile deep linking形式从Open Web本机应用程序导入的首批特征之一。

但特别值得一提的是组合新鲜 + 可安装,因为它代表了作为 native 平台的Web的主要优势之一备择方案。此处可安装表示它出现在主屏幕中。这并不意味着您需要通过下载和安装阶段。您在浏览时打开URL或发现服务并完成:it appears in your home screen

Fresh 指的是常规网络的工作方式,提供即时加载和无缝更新。我们不会要求您在YouTube网站上安装更新,但会在您下次访问时使用该更新。

我并不是在谈论其余各点的好处,因为你要求的是差异,例如,重新参与是本机应用程序已经通过推送服务和通知已经拥有的东西,现在Web应用程序已经赶上了。 / p>

其他相关和关键问题是哪个平台更适合您的需求。如果您没有访问特殊的硬件功能,那么Web就足够了,选择不受市场,专有生态系统影响的网络,顺便说一下,您可以确保某些等级的普遍性和互操作性。 / p>

作为最后的说明,我建议您通过Chrome浏览器浏览www.flipkart.com。它非常棒:没有错误,流畅的导航,应用程序般的感觉。离线,它将继续工作。这篇文章的一个真实世界的例子。将应用程序添加到主屏幕,下次打开它时,体验会更好。

您可以查看Firefox OS以及将more platform APIs带入标准网的示例(或多或少取得成功)。