在 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 界面,但它无法提供对现代 Web 平台功能(例如联系人选择工具或文件系统等)的完整访问权限。
Cordova 旨在弥补 WebView 的不足,但其 API 仅限于 Cordova 环境。这意味着,您需要为 Android 应用维护一个额外的代码库,以便使用 Cordova API,该代码库与开放网络上的 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 项目以 NodeJS 库和命令行界面 (CLI) 的形式生成 Android 应用。
通过运行该工具并传递 Web 清单的网址,可以引导新项目:
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 应用。为确保不会发生这种情况,必须使用名为 Digital Asset Links 的工具将 Android 应用与渐进式 Web 应用配对。
Bubblewrap 和 PWABuilder 会负责 Android 应用上的必要配置,但最后一步仍需完成,即向 PWA 添加 assetlinks.json 文件。
如需生成此文件,开发者需要获取用于对用户正在下载的 APK 进行签名的密钥的 SHA-256 签名。
该密钥可以通过多种方式生成,而要找到用于对提供给最终用户的 APK 进行签名的密钥,最简单的方法是从 Play 商店本身下载该密钥。
为避免向用户显示损坏的应用,请将应用部署到封闭式测试渠道,将其安装到测试设备中,然后使用 Peter 的 Asset Link 工具为应用生成正确的 assetlinks.json 文件。在要验证的网域中,通过 /.well-known/assetlinks.json 提供生成的 assetlinks.json 文件。
下一步做什么
渐进式 Web 应用可提供优质的 Web 体验。Trusted Web Activity 是一种新方式,可让您在 Android 应用中打开符合最低质量标准的优质体验。
如果您刚开始接触渐进式 Web 应用,请阅读有关如何构建出色 PWA 的指南。对于已有 PWA 的开发者,请使用 Lighthouse 验证其是否符合质量标准。
然后,使用 Bubblewrap 或 PWABuilder 生成 Android 应用,将应用上传到 Play 商店中的封闭式测试渠道,并使用 Peter 的 Asset Link Tool 将其与 PWA 配对。
最后,将应用从封闭式测试渠道移至正式版!