2015年,谷歌推出了一种开发Android应用程序的新方法:progressive web apps . 可以创建一个看起来像本机应用程序的应用程序,可以使用设备的硬件,如摄像头和加速度计,接收推送通知,具有启动器图标,离线工作,存储本地数据等 .
在Android上,本机应用程序提供的渐进式Web应用程序不支持哪些功能,反之亦然 .
2015年,谷歌推出了一种开发Android应用程序的新方法:progressive web apps . 可以创建一个看起来像本机应用程序的应用程序,可以使用设备的硬件,如摄像头和加速度计,接收推送通知,具有启动器图标,离线工作,存储本地数据等 .
在Android上,本机应用程序提供的渐进式Web应用程序不支持哪些功能,反之亦然 .
2 回答
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中whatwebcando.today的屏幕截图:
硬件访问包括
geolocation - 绝大多数浏览器都支持
_389_相机和麦克风通过getUserMedia/Stream和即将推出的MediaStream Image Capture API
设备vibration
screen orientation and accelerometer access,包括compass and gyroscope
battery status
即将推出的硬件访问
这些功能正在实现或已在某些浏览器中运行:
蓝牙通过Web Bluetooth API
NFC
ambient light sensor(Firefox 48中的works)
proximity sensor(Firefox 48中的works)
accelerometer,magnetometer和gyroscope传感器访问
shape detection API
另一个需要注意的重要事项是Origin Trials Framework(implemented in Chrome)使制造商能够公开和测试硬件(或软件)功能,而无需经历标准化过程 . 例如,手机制造商可以公开API以读取压力传感器的值,对其进行细化,然后将其提交给W3C考虑 .
除了硬件访问之外,还有传统上由原始应用程序使用的软件功能,现在可用于Web应用程序 .
PWA也可以使用的传统原生功能
推送通知
离线工作
adding an icon to the home screen
由于WebAPKs,
出现在应用程序列表中 - 渐进式Web应用程序现在可以打包到实际可安装的Android软件包中!
在full-screen发布
clipboard access
通过HTML5 Canvas或WebGL
硬件加速的2D / 3D图形 - 检查一些HTML5 Canvas demos,WebGL sites或three.js library . Unity cross-platform game engine的2014年基准测试比较了原生与WebGL渲染性能,以及concluded
The gap has indeed been closing .
reading用户在任何浏览器中选择的文件
slick, smooth UIs与60fps animations
这些功能涵盖了很多用例,现在许多流行的本机应用程序都可以重写为PWA . 以Slack为例 . 它的开源替代品,Rocket.Chat, is building a PWA version . 有关更多PWA演示,请参阅https://pwa.rocks .
来自PWA的类似本机的功能
原生Android功能尚未提供给PWA
访问指纹传感器(under development)
联系人,日历和浏览器书签访问权限(缺乏对这些内容的访问权限可被隐私用户视为feature)
警报
电话功能 - 拦截短信或电话,发送短信/彩信,获取用户的电话号码,阅读语音邮件,拨打电话,无需拨号器对话框
低级访问一些硬件功能和传感器:手电筒,大气压力传感器
系统访问:任务管理,修改系统设置,日志
Progressive Web Apps提供本机应用程序缺少的功能
discoverability - 搜索引擎可以轻松找到渐进式网络应用程序中的内容,但像StackOverflow这样的以内容为中心的本机应用程序赢得了't show among app store search results for content that it does offer access to, such as 383191 . This is a problem for communities like Reddit, which can' t,将其众多子社区作为单独的"apps"暴露给应用程序商店 .
linkability - 任何页面/屏幕都可以有直接链接,可以轻松共享
bookmarkability - 保存该链接以直接访问应用程序的视图
always fresh - 无需通过应用商店推送更新
universal access - 不受应用商店sometimes arbitrary policies或(非预期)geographic restrictions的约束
large data savings ,在具有昂贵和/或缓慢互联网接入的新兴市场中极为重要 . 例如,电子商务网站Konga cut data usage by 92% for the first load by migrating to a PWA .
low friction of distribution - 如果您的渐进式网络应用程序在线,则Android(和其他移动)用户已经可以访问它 .
65.5% of US smartphone users don't download any new apps each month
PWA无需转到应用程序商店,搜索应用程序,单击安装,等待下载,然后打开应用程序 . Each of these steps loses 20% of the potential users.
最后注意事项:PWA在桌面和大多数移动设备上以相同的代码库运行 . 在桌面环境中(ChromeOS和later Mac和Windows),它们以与其他应用程序相同的方式启动,并在常规应用程序窗口(无浏览器选项卡)中运行 .
本机应用程序的主要优点是它们可以访问平台可以提供的所有本机API(联系人,相机闪存,SMS,电话,网络,蓝牙,传感器,原始套接字......),而渐进式Web应用程序不能(尚未)因为它们受标准Web功能的限制 .
渐进式Web应用程序的目标是扩展这些功能以涵盖最关键的案例 . 在这种情绪下,请查看Progressive Web Apps: Escaping Tabs Without Loosing Our Soul,您可以在其中找到渐进式Web应用程序应提供的列表:
从这些观点来看,linkable是以mobile deep linking形式从Open Web本机应用程序导入的第一个特征之一 .
但特别值得一提的是组合新鲜的可安装性,因为它代表了Web作为本地替代品的平台的主要优势之一 . 这里可安装意味着它出现在主屏幕中 . 这并不意味着您需要通过下载和安装阶段 . 您在浏览时打开URL或发现服务并完成:it appears in your home screen .
Fresh指的是常规Web的工作方式,提供即时负载和无缝更新 . 您不会被要求从YouTube网站安装更新,它已部署,您下次访问时会使用它 .
我不是在讨论其余点的好处,因为你要求的是差异,例如,重新参与是本机应用程序已经通过推送服务和通知已经拥有的东西,现在Web应用程序已经赶上了 .
其他相关和关键问题是哪个平台更适合您的需求 . 如果您没有访问特殊的硬件功能,那么Web就足够了,选择您从市场,专有生态系统中解放出来的网络,顺便说一句,您可以确保某些等级的普遍性和互操作性 .
作为最后的说明,我建议您通过Chrome浏览器浏览www.flipkart.com . 它非常棒:没有错误,流畅的导航,应用程序般的感觉 . 离线,它将继续工作 . 这篇文章的一个真实世界的例子 . 将应用程序添加到主屏幕,下次打开它时,体验会更好 .
您可以查看Firefox OS以及将more platform APIs带入标准Web的示例(或多或少成功) .