在 Android 应用中启动 PWA
渐进式 Web 应用 (PWA) 是一种 Web 应用程序,它使用类似应用的功能来创建快速、可靠且引人入胜的高质量体验。
Web 具有令人难以置信的覆盖范围,并为用户发现新体验提供了强大的方式。但用户也习惯于在其操作系统商店中搜索应用程序。在许多情况下,这些用户已经熟悉他们正在寻找的品牌或服务,并且具有较高的意向性,从而带来高于平均水平的互动指标。
Play 商店是 Android 应用的商店,开发者通常希望从他们的 Android 应用中打开他们的渐进式 Web 应用。
Trusted Web Activity 是一项开放标准,它允许浏览器提供完全兼容 Web 平台的容器,以在 Android 应用内部渲染 PWA。此功能在 Chrome 中可用,并且正在 Firefox Nightly 中开发。
现有解决方案存在局限性
一直以来,都可以使用 Android WebView 等技术或 Cordova 等框架在 Android 应用中包含 Web 体验。
Android WebView 的局限性在于它并非旨在作为浏览器替代品。Android WebView 是一种开发者工具,用于在 Android 应用中使用 Web UI,并且它不提供对现代 Web 平台功能的完全访问权限,例如 联系人选择器或 文件系统、等等。
Cordova 旨在弥补 WebView 的缺点,但 API 随后仅限于 Cordova 环境。这意味着你需要维护一个额外的代码库,用于在你的 Android 应用中使用 Cordova API,这与你在开放 Web 上的 PWA 是分开的。
此外,功能发现通常并不总是按预期工作,并且 Android 版本和 OEM 之间的兼容性问题也可能成为问题。当使用其中一种解决方案时,开发者需要额外的质量保证流程,并产生额外的开发成本来检测和创建解决方法。
Trusted Web Activity 是 Android 上 Web 应用的新容器
开发者现在可以使用 Trusted Web Activity 作为容器,将 PWA 作为 Android 应用的启动 Activity 包含进来。该技术利用浏览器全屏渲染 PWA,确保 Trusted Web Activity 与底层浏览器一样,与 Web 平台功能和 API 具有相同的兼容性。还有开源实用程序可以使使用 Trusted Web Activity 实现 Android 应用变得更加容易。
其他解决方案不具备的另一个优势是,容器与浏览器共享存储空间。登录状态和用户偏好在各种体验中无缝共享。
浏览器兼容性
该功能自 Chrome 75 版本起已在 Chrome 中可用,Firefox 正在其 nightly 版本中实现它。
质量标准
当 Web 开发者想要在 Android 应用中包含 Web 内容时,应使用 Trusted Web Activity。
Trusted Web Activity 中的 Web 内容必须满足 PWA 的可安装性标准。
此外,为了与用户对 Android 应用程序的期望行为相匹配,Chrome 86 引入了一项更改,其中未能处理以下情况将被视为崩溃
- 启动应用程序时未能验证数字资产链接。
- 对于离线网络资源请求,未能返回 HTTP 200。
- 导航请求返回 HTTP 404 或 5xx 错误。
当 Trusted Web Activity 中发生这些情况之一时,会导致 Android 应用程序发生用户可见的崩溃。查看关于在你的 Service Worker 中处理这些情况的指南。
应用程序还必须满足其他特定于 Android 的标准,例如政策合规性。

工具
想要利用 Trusted Web Activity 的 Web 开发者无需学习新技术或 API 即可将其 PWA 转换为 Android 应用程序。Bubblewrap 和 PWABuilder 一起以库、命令行界面 (CLI) 和图形用户界面 (GUI) 的形式提供开发者工具。
Bubblewrap
Bubblewrap 项目以 NodeJS 库和命令行界面 (CLI) 的形式生成 Android 应用。
启动一个新项目可以通过运行该工具并传递 Web Manifest 的 URL 来实现
npx @bubblewrap/cli init --manifest=https://pwa-directory.appspot.com/manifest.json
该工具还可以构建项目,运行以下命令将输出一个准备好上传到 Play 商店的 Android 应用程序
npx @bubblewrap/cli build
运行此命令后,一个名为 app-release-signed.apk
的文件将在项目的根目录中可用。这将是上传到 Play 商店的文件。
PWABuilder
PWABuilder 帮助开发者将现有网站转换为渐进式 Web 应用。它还与 Bubblewrap 集成,以提供 GUI 界面,将这些 PWA 打包成 Android 应用。PWABuilder 团队撰写了一篇很棒的博文,介绍了如何使用该工具生成 Android 应用程序。
验证 Android 应用中 PWA 的所有权
构建出色渐进式 Web 应用的开发者不希望其他开发者未经其许可就使用它构建 Android 应用。为了确保这种情况不会发生,Android 应用程序必须使用名为 Digital Asset Links 的工具与渐进式 Web 应用配对。
Bubblewrap 和 PWABuilder 负责处理 Android 应用程序上的必要配置,但还剩下最后一步,即将 assetlinks.json
文件添加到 PWA。
要生成此文件,开发者需要用于签署用户正在下载的 APK 的密钥的 SHA-256 签名。
密钥可以通过多种方式生成,找到签署提供给最终用户的 APK 的密钥的最简单方法是从 Play 商店本身下载它。
为了避免向用户显示损坏的应用程序,请将应用程序部署到封闭测试渠道,将其安装到测试设备中,然后使用 Peter's Asset Link Tool 为该应用生成正确的 assetlinks.json
文件。使生成的 assetlinks.json
文件在正在验证的域中的 /.well-known/assetlinks.json
中可用。
下一步去哪里
渐进式 Web 应用是一种高质量的 Web 体验。Trusted Web Activity 是一种从 Android 应用中打开这些高质量体验的新方法,前提是它们满足最低质量标准。
如果你刚开始使用渐进式 Web 应用,请阅读我们的关于如何构建出色的 PWA 的指南。对于已经拥有 PWA 的开发者,请使用 Lighthouse 验证它是否满足质量标准。
然后,使用 Bubblewrap 或 PWABuilder 生成 Android 应用程序,将应用程序上传到 Play 商店的封闭测试渠道,并使用 Peter's Asset Link Tool 将其与 PWA 配对。
最后,将你的应用程序从封闭测试渠道移至生产环境!