当用户将您的渐进式 Web 应用添加到 Android 上的主屏幕时,Chrome 会自动为您生成一个 APK,我们有时将其称为 WebAPK。通过 APK 安装使您的应用可以显示在应用启动器和 Android 的应用设置中,并注册一组 intent 过滤器。
安装 PWA 在 Android 上不仅仅是将渐进式 Web 应用添加到用户的主屏幕。Chrome 会自动生成并安装您应用的特殊 APK。我们有时将其称为 WebAPK。通过 APK 安装使您的应用可以显示在应用启动器和 Android 的应用设置中,并注册一组 intent 过滤器。
为了生成 WebAPK,Chrome 会查看网络应用清单和其他元数据。当检测到清单更新时,Chrome 需要生成新的 APK。
Android intent 过滤器
当渐进式 Web 应用安装在 Android 上时,它将为应用范围内的所有 URL 注册一组 intent 过滤器。当用户点击应用范围内的链接时,应用将打开,而不是在浏览器标签页中打开。
考虑以下部分 manifest.json
"start_url": "/",
"display": "standalone",
当使用它的 Web 应用从应用启动器启动时,它将打开 https://example.com/
作为独立应用,没有任何浏览器 Chrome。
WebAPK 将包含以下 intent 过滤器
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/" />
</intent-filter>
如果用户在已安装的应用中点击指向 https://example.com/read
的链接,则该链接将被 intent 捕获并在渐进式 Web 应用中打开。
使用 scope
限制 intent 过滤器
如果您不希望渐进式 Web 应用处理您网站内的所有 URL,您可以将 scope
属性添加到您的 Web 应用清单中。scope
属性告诉 Android 仅当 URL 与 origin
+ scope
匹配时才打开您的 Web 应用。它可以让您控制哪些 URL 将由您的应用处理,哪些 URL 应该在浏览器中打开。当您在同一域名上同时拥有应用和其他非应用内容时,这非常有用。
考虑以下部分 manifest.json
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
从应用启动器启动时,它将打开 https://example.com/app/
作为独立应用,没有任何浏览器 Chrome。
与之前一样,生成的 WebAPK 将包含 intent 过滤器,但 APK 的 AndroidManifest.xml
中具有不同的 android:pathPrefix
属性
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/app/" />
</intent-filter>
让我们看几个示例
https://example.com/app/
- 在 /app/
内
https://example.com/app/read/book
- 在 /app/
内
https://example.com/help/
- 不在 /app/
中
https://example.com/about/
- 不在 /app/
中
有关 scope
的更多信息,当您不设置它时会发生什么,以及如何使用它来定义应用范围,请参阅 scope
。
管理权限
权限的工作方式与其他 Web 应用相同,并且无法在安装时请求。相反,它们必须在运行时请求,理想情况下仅在您真正需要它们时才请求。例如,不要在首次加载时请求相机权限,而应等到用户尝试拍照时再请求。
管理存储和应用状态
即使渐进式 Web 应用是通过 APK 安装的,Chrome 也会使用当前配置文件来存储任何数据,并且不会将其隔离。这允许在浏览器和已安装的应用之间共享体验。Cookie 是共享和活动的,任何客户端存储都是可访问的,并且 Service Worker 已安装并准备就绪。
更新 WebAPK
有关 WebAPK 如何更新的信息已移至Chrome 如何处理 Web 应用清单的更新。
常见问题解答
- 使用什么图标来生成启动画面?
- 我们建议您至少提供两个图标:192 像素和 512 像素用于启动画面。我们收到您的反馈,启动画面上的图标太小。在 Chrome 71 或更高版本中生成的 WebAPK 将在启动画面上显示更大的图标。无需采取任何措施,只要提供了推荐的图标即可。
- 如果用户已经安装了该网站的原生应用会发生什么?
- 与今天添加到主屏幕一样,用户将能够独立于任何原生应用添加网站。如果您希望用户可能同时安装两者,我们建议将您的网站图标或名称与您的原生应用区分开来。
- 如果用户清除 Chrome 的缓存,我安装的网站的存储会被清除吗?
- 是的。
- 当我获得新设备时,我的应用会被重新安装吗?
- 目前不会,但我们认为这是一个重要的领域,我们正在研究使其工作的方法。
- 权限是如何处理的?我会看到 Chrome 提示还是 Android 的提示?
- 权限仍将通过 Chrome 进行管理。用户将看到 Chrome 提示以授予权限,并且可以在 Chrome 设置中编辑它们。
- 这将在哪些 Android 版本上运行?
- 渐进式 Web 应用可以安装在运行 Chrome for Android 的所有 Android 版本上,特别是 Jelly Bean 及更高版本。
- 这使用 WebView 吗?
- 不,该网站在用户从中添加该网站的 Chrome 版本中打开。
- 我们可以将创建的 APK 上传到 Play 商店吗?
- 不可以。如果您想上传自己的 APK,请查看Trusted Web Activities。
- 这些会在 Play 商店中列出吗?
- 不会。如果您想上传自己的 APK 以在 Play 商店中列出,请查看 Trusted Web Activities。
- 我是 Android 上另一个浏览器的开发者,我可以拥有这种无缝安装过程吗?
- 我们正在努力。我们致力于使所有 Android 浏览器都可以使用此功能,我们将尽快提供更多详细信息。