在 Android 应用中启动 PWA
渐进式 Web 应用 (PWA) 是一种 Web 应用,它使用类似应用的功能来打造 快速、可靠且引人入胜的优质体验。
Web 具有令人难以置信的覆盖面,并为用户发现新体验提供了强大的方式。但用户也习惯于在操作系统商店中搜索应用。在许多情况下,这些用户已经熟悉他们要寻找的品牌或服务,并且具有很高的意向性,这会带来高于平均水平的互动指标。
Play 商店是 Android 应用的商店,开发者通常希望从 Android 应用中打开渐进式 Web 应用。
Trusted Web Activity 是一种开放标准,允许浏览器提供完全与 Web 平台 兼容的容器,该容器可在 Android 应用内呈现 PWA。此功能 在 Chrome 中可用,并且正在 Firefox Nightly 中开发。
现有解决方案存在限制
Android WebView 的限制在于,它并非旨在替代浏览器。Android WebView 是一种开发者工具,用于在 Android 应用中使用 Web 界面,它无法完全访问现代 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 版起已推出,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 清单的网址即可:
npx @bubblewrap/cli init --manifest=https://pwa-directory.appspot.com/manifest.json
该工具还可以构建项目,运行以下命令将输出一个 Android 应用,该应用可随时上传到 Play 商店:
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 应用上的必要配置,但还剩最后一步,即向 PWA 添加 assetlinks.json 文件。
如需生成此文件,开发者需要用户下载的 APK 签名所用密钥的 SHA-256 签名。
密钥可以通过多种方式生成,而查找为提供给最终用户的 APK 签名的密钥的最简单方法是从 Play 商店本身下载该密钥。
为避免向用户显示损坏的应用,请将应用部署到
封闭式测试渠道,将其安装到测试设备中,然后使用 Peter 的 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 配对。
最后,将应用从封闭式测试渠道移至正式版渠道!