在 Android 上,前进网络应用和本地应用有什么不同,反之亦然

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

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

69132 次浏览

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

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

  • 响应性: 适合任何形式的因素
  • 独立于连接性: 逐步增强服务工作者,让他们离线工作
  • 类应用程序交互: 采用 Shell + Content 应用程序模型来创建 appy 导航和交互
  • 新鲜: 由于 ServiceWorker 更新过程,显然总是最新的
  • 安全: 通过 TLS (服务员的要求)提供服务,以防止窥探
  • 可发现: 是可识别为“应用程序”感谢 W3C 清单和服务工作者注册范围允许搜索引擎找到他们
  • 可重新启用: 可以访问操作系统的重新启用 UI; 例如,推送通知
  • 可安装: 通过浏览器提供的提示到主屏幕,允许用户“保留”他们认为最有用的应用程序,而不用担心应用程序商店的麻烦
  • 可链接: 意味着它们是零摩擦、零安装、易于共享的。 URL 的社会力量很重要。

从这些方面来看,可联系的是本地应用程序以 移动深度连接移动深度连接的形式从 Open Web 导入的第一批特性之一。

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

Fresh 指的是一个常规网站的工作方式,提供即时加载和无缝更新。你不需要从 YouTube 的网站上安装更新,它已经部署好了,你下次访问它的时候就可以使用它了。

我不是在讨论剩下几点的好处,因为你要求的差异,例如,重新参与是本地应用程序已经通过推送服务和通知,现在网络应用程序已经赶上来了。

其他相关的关键问题是哪个平台更适合您的需要。如果你不访问特殊的硬件能力,网络应该足够,选择网络你是免费的市场,专有的生态系统,顺便说一下,你可以确保一定的普及度和 互操作性

最后,我建议您使用 Chrome 浏览手机上的 Www.flipkart.com。非常棒: 没有 bug,导航流畅,有应用程序的感觉。下线后,它将继续工作。这是一个真实世界的例子。将应用程序添加到主屏幕,下次打开它,体验甚至更好。

您可以看看 火狐操作系统以及将 more platform APIs引入标准 Web 的示例(或多或少成功)。

截至2017年2月,渐进式 Web 应用程序是一个足够强大的平台,Twitter 已经将他们所有的移动网络流量转移到了一个 React PWA

截至2016年8月,渐进式 Web 应用程序实际上提供了比通常想象的更多的硬件访问。下面是我的安卓版 Chrome 52的 今天怎么了截图:

What Web Can Do Today - Chrome 52 on Android

Hardware access includes

Upcoming hardware access

这些特性已经在一些浏览器中实现或者已经可以工作了:

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

除了硬件访问,还有一些传统上由本地应用程序使用的软件特性,现在可以在网络应用程序中使用。

PAs 也可以使用传统的本机特性

这些特性涵盖了很多用例,现在很多流行的本地应用程序都可以重写为 PWA。以 Slack 为例。它的开源替代品 Rocket.Chat, is building a PWA version。有关更多 PWA 演示,请参见 https://pwa.rocks

本机特性来到 PWA

原生 Android 特性 尚未提供给 PWA

  • 访问指纹传感器(正在开发中)
  • 联系人、日历和浏览器书签的访问权限(对于注重隐私的用户来说,无法访问这些内容可被视为 特写)
  • 警报
  • 电话功能-拦截短信或电话,发送短信/彩信,获取用户的电话号码,阅读语音邮件,打电话没有拨号器对话框
  • 低层访问一些硬件功能和传感器: 手电筒,大气压力传感器
  • 系统访问: 任务管理、修改系统设置、日志

Progressive Web Apps offer features that native apps lack

  • 可发现性 -搜索引擎可以很容易地找到进步网络应用程序中的内容,但是像 StackOverflow 这样以内容为中心的本地应用程序不会在应用程序商店搜索结果中显示它确实提供访问的内容,如“ pwa vs. 本地”。这对于像 Reddit 这样的社区来说是个问题,因为它们不能将自己众多的子社区作为单独的“应用程序”暴露给应用程序商店。
  • linkability - any page/screen can have a direct link, which can be shared easily
  • bookmarkability - save that link to access an app's view directly
  • 总是新鲜的 ——不需要通过应用程序商店来推送更新
  • 通用访问 -不受应用程序商店 有时是武断的政策或(意外) < a href = “ https://android.stackexchange.com/questions/12538/how-can-i-around-region-limited-in-google-play-store”> 地理限制
  • 大量的数据储存 ,在新兴市场中非常重要,因为这些市场的互联网接入速度昂贵和/或缓慢。
  • low friction of distribution - if your progressive web app is online, it's already accessible for Android (and other mobile) users.

最后注意: 在台式机和大多数移动设备上运行的 PWA 具有相同的代码基础。在台式机环境(ChromeOS、 回见 Mac 和 Windows)中,它们和其他应用程序一样被启动,并在常规应用程序窗口中运行(没有浏览器标签)。