在 Android 应用中启动 PWA
渐进式 Web 应用 (PWA) 是指使用类应用功能打造快速、可靠且具有吸引力的优质体验的 Web 应用。
网络的覆盖范围极广,为用户提供了发现新体验的有效途径。但用户也习惯于在其操作系统存储区中搜索应用。在许多情况下,这些用户已经熟悉他们所需的品牌或服务,并且意向强烈,因此其互动指标会高于平均水平。
Play 商店是面向 Android 应用的商店,开发者经常希望从他们的 Android 应用中打开渐进式 Web 应用。
可信网络活动是一项开放式标准,允许浏览器提供与网络平台完全兼容的容器,以在 Android 应用中呈现 PWA。Chrome 中提供此功能,Firefox Nightly 正处于开发阶段。
现有解决方案受到限制
使用 Android WebView 等技术或 Cordova 等框架始终有可能在 Android 应用中提供 Web 体验。
Android WebView 的局限性在于它不能作为浏览器替代品,Android WebView 是一款用于在 Android 应用中使用网页界面的开发者工具,无法提供对联系人选择器或文件系统等现代 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 起就已提供此功能,而 Firefox 在其夜间版本中实现了此功能。
质量标准
Web 开发者如果想在 Android 应用中包含 Web 内容时,应使用 Trusted Web Activity。
Trusted Web Activity 中的 Web 内容必须符合 PWA 可安装性标准。
此外,为了符合用户期望的 Android 应用行为,Chrome 86 引入了一项更改,即未能处理以下情形将被视为崩溃:
- 未能在应用启动时验证 Digital Asset Links。
- 未能针对离线网络资源请求返回 HTTP 200。
- 返回 HTTP 404 或 5xx 错误的导航请求”。
当 Trusted Web Activity 中发生这类情况之一时,会导致 Android 应用出现用户可见的崩溃。查看有关在 Service Worker 中处理这些场景的指南。
应用还必须满足其他 Android 专用标准,例如政策合规性。
![屏幕截图:AirHorn 的 Lighthouse 得分,带有 PWA 徽章,性能得分为 100。](https://web.developers.google.cn/static/articles/using-a-pwa-in-your-android-app/image/a-screenshot-showing-lig-821b74a33707e.png?authuser=5&hl=sl)
工具
想要利用 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 应用配对。
对话泡和 PWABuilder 会处理 Android 应用上的必要配置,但最后一步是将 assetlinks.json
文件添加到 PWA。
为了生成此文件,开发者需要密钥的 SHA-256 签名,该密钥用于为用户下载的 APK 签名。
密钥可通过多种方式生成,要找到哪个密钥为提供给最终用户的 APK 签名,最简单的方法是从 Play 商店下载密钥。
为避免向用户显示损坏的应用,请将应用部署到封闭的测试渠道,将其安装到测试设备,然后使用 Peter 的资源链接工具为应用生成正确的 assetlinks.json
文件。使生成的 assetlinks.json
文件位于要验证的网域中。/.well-known/assetlinks.json
下一步做什么
渐进式 Web 应用可提供优质的 Web 体验。Trusted Web Activity 是一种新方法,能够在 Android 应用满足最低质量标准时,从应用中提供这些高品质体验。
如果您刚开始使用渐进式 Web 应用,请阅读我们关于如何构建优质 PWA 的指南。对于已安装 PWA 的开发者,请使用 Lighthouse 验证它是否符合质量标准。
然后,使用 Bubblewrapwrap 或 PWABuilder 生成 Android 应用,将应用上传到 Play 商店中的封闭式测试渠道,并使用 Peter 的 Asset Link Tool 将其与 PWA 配对。
最后,将您的应用从封闭式测试渠道发布为正式版!