渐进式Web应用程序与本机应用程序相比具有哪些function,反之亦然,Android上

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

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

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

截至2016年8月,渐进式Web应用程序实际上提供了比通常想象的更多的硬件访问。 以下是Android上我的Chrome 52稳定版中的whatwebcando.today截图:

网络今天能做什么 -  Android上的Chrome 52

硬件访问包括

  • 地理位置 – 在绝大多数浏览器中都支持
  • 相机和麦克风通过getUserMedia / Stream和即将到来的MediaStream图像捕捉 API
  • 设备振动
  • 屏幕方向和加速计访问,包括指南针和陀螺仪
  • 电池状态

即将到来的硬件访问

这些function正在实施或已经在一些浏览器中工作:

  • 蓝牙通过networking蓝牙 API
  • NFC
  • 环境光线传感器 ( 适用于Firefox 48+)
  • 接近传感器 ( 适用于Firefox 48+)
  • 加速计 , 磁力计和陀螺仪传感器访问
  • 形状检测API

另一个需要注意的重点是原始testing框架( 在Chrome中实施 )使制造商能够公开和testing硬件(或软件)function,而无需通过标准化过程。 例如,手机制造商可能会暴露一个API来读取压力传感器的值,然后将其提交给W3C。

除了硬件访问,还有传统上由本地应用程序使用的软件function,现在可用于Web应用程序。

传统上PWA也可以使用的本地function

  • 推送通知
  • 离线工作
  • 在主屏幕上添加一个图标
  • 出现在应用程序列表感谢WebAPK – 渐进式Web应用程序现在可以打包成实际可安装的Android软件包!
  • 全屏启动
  • 剪贴板访问
  • 通过HTML5 Canvas或WebGL进行硬件加速的2D / 3Dgraphics – 检查一些HTML5 Canvas演示 , WebGL网站或three.js库 。 Unity跨平台游戏引擎的2014年基准testing比较了本机和WebGL渲染性能,并得出结论

    “最重要的是,虽然WebGL仍然比本地代码慢很多,但总体而言,您可以期待非常不错的性能,而且未来只会变得更好。”

    差距确实在缩小 。

  • 在任何浏览器中阅读用户select的文件
  • 光滑,平滑的用户界面与60fpsanimation

这些function涵盖了很多用例,现在许多stream行的本地应用程序可以重写为PWA。 以松弛为例。 它的开源替代品Rocket.Chat正在构build一个PWA版本 。 有关更多PWA演示,请参阅https://pwa.rocks

与PWA相似的本地特征

  • 处理意图 – 例如, 共享一个页面到另一个应用程序 ,或成为共享目标 ,例如PWA聊天应用程序接收图像设置为用户的头像

PWA目前缺乏的原生Androidfunction

  • 联系人,日历和浏览器书签访问权限(对这些访问权限的访问权限可能被隐私意识的用户视为function )
  • 警报
  • 电话function – 拦截短信或电话,发送短信/彩信,获取用户的电话号码,阅读语音邮件,拨打电话时不需要拨号对话框
  • 低级访问一些硬件function和传感器:手电筒,大气压力传感器
  • 系统访问:任务pipe理,修改系统设置,日志

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

  • 可发现性 – 渐进networking应用程序中的内容可以很容易地被search引擎find,但是像StackOverflow这样以内容为中心的本地应用程序不会在应用程序商店的search结果中显示它提供访问的内容,例如“pwa vs. native”。 这对像Reddit这样的社区来说是一个问题,它不能将他们众多的子社区作为单独的“应用”展示给app store。
  • 可链接性 – 任何页面/屏幕都可以有直接链接,可以轻松共享
  • 可collections性 – 保存该链接直接访问应用的视图
  • 总是新鲜 – 无需通过应用程序商店去推动更新
  • 通用访问 – 不受应用程序商店的限制, 有时甚至是任意策略或(意外的) 地理限制
  • 大量的数据节省 ,在互联网接入昂贵和/或缓慢的新兴市场中非常重要。 例如,电子商务网站Konga 通过迁移到PWA,将首次加载的数据使用率降低了92% 。
  • 分发的低摩擦 – 如果您的渐进networking应用程序在线,它已经可以为Android(和其他移动)用户访问。
    • 65.5%的美国智能手机用户每个月都不下载任何新的应用程序
    • PWA不需要去应用程序商店,search应用程序,单击安装,等待下载,然后打开应用程序。 每个步骤都会损失20%的潜在用户。

原生应用程序的主要优点是它们可以访问平台可以提供的所有本地API(联系人,相机闪光灯,SMS,电话,networking,蓝牙,传感器,原始套接字…)因为它们受到标准Webfunction的限制。

渐进式Web应用程序的目标是扩展这些function以涵盖最关键的情况。 在这种情绪下,看看渐进式的Web应用程序:逃避标签不放松我们的灵魂 ,你可以find一个渐进的Web应用程序应该提供什么列表:

  • 响应:适合任何forms的因素
  • 独立连接:与服务人员逐步增强,让他们脱机工作
  • 类似于应用程序的交互:采用Shell + Content应用程序模型来创build应用程序导航和交互
  • 新鲜:感谢Service Worker更新过程,透明地始终保持最新状态
  • 安全:通过TLS(服务工作者要求)服务,以防止窥探
  • 可发现的:由于W3C的清单和服务工作者注册范围允许search引擎find它们,可以被识别为“应用程序”
  • 可重新参与:可以访问操作系统的重新参与UI; 例如推送通知
  • 可安装:通过浏览器提供的提示进入主屏幕,允许用户“保留”他们发现最有用的应用程序,而无需应用程序商店的麻烦
  • 可链接:意味着它们是零摩擦,零安装,并且易于共享。 URL的社会力量很重要。

从这些方面来说, 可链接是Open Web本地应用程序以移动深度链接的forms引入的第一个特征之一。

但特别值得一提的是组合新鲜 +可安装,因为它代表了作为一个平台的本地替代scheme的Web的主要优势之一。 这里的可安装意味着它出现在你的主屏幕上。 这并不意味着您需要通过下载和安装阶段。 您打开一个URL或发现一个服务,而浏览和它已经完成: 它出现在您的主屏幕 。

新鲜是指一个普通的networking如何工作,提供即时加载和无缝更新。 系统不会要求您从YouTube的networking安装更新程序,而是在您下次访问时将其部署并使用。

我不是在谈论剩余点的好处,因为你要求的差异,例如,重新参与是原生应用程序已经通过推送服务和通知,现在的Web应用程序已经赶上。

其他相关的关键问题是关于哪个平台更适合您的需求。 如果您没有访问特殊的硬件function,那么Web应该足够了,selectnetworking,您可以从市场,专有生态系统中免费获得,顺便说一句,您可以确保一定程度的无处不在和互操作性

作为最后的笔记,我build议您使用Chrome浏览器通过手机浏览www.flipkart.com 。 这真是太棒了:没有错误,stream畅的导航,应用程序般的感觉。 脱机,它将继续工作。 这个职位真正的现实世界的例子。 将应用程序添加到主屏幕,下次打开时,体验会更好。

您可以看看Firefox OS以及将更多平台API带入标准Web的示例(或多或less的成功)。