当用户将您的渐进式 Web 应用添加到 Android 设备的主屏幕时,Chrome 会自动为您生成一个 APK(有时称为 WebAPK)。通过 APK 安装后,您的应用将可以显示在应用启动器中、Android 应用设置中,并注册一组 intent 过滤器。
在 Android 设备上安装 PWA 不仅仅是将渐进式 Web 应用添加到用户的主屏幕。Chrome 会自动生成并安装应用的特殊 APK。我们有时将其称为 WebAPK。通过 APK 安装应用后,您的应用便可显示在应用启动器和 Android 的应用设置中,并注册一组 intent 过滤器。
如需生成 WebAPK,Chrome 会查看网站应用清单和其他元数据。检测到清单更新时,Chrome 需要生成新的 APK。
Android intent 过滤器
在 Android 上安装渐进式 Web 应用后,该应用会为应用范围内的所有网址注册一组 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 会捕获该链接,并在 Progressive Web App 中打开该链接。
使用 scope
限制 intent 过滤器
如果您不希望您的渐进式 Web 应用处理您网站中的所有网址,可以将 scope
属性添加到您的 Web 应用清单。scope
属性会告知 Android 仅在网址与 origin
+ scope
匹配时打开您的 Web 应用。借助它,您可以控制哪些网址将由应用处理,哪些网址应在浏览器中打开。如果您的应用和其他非应用内容位于同一网域中,这非常有用。
请考虑以下部分 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 会被共享并处于活动状态,任何客户端存储空间都可以访问,并且服务工作器已安装并可以使用。
更新 WebAPK
有关如何更新 WebAPK 的信息已移至 Chrome 如何处理 Web 应用清单更新。
常见问题解答
- 哪些图标用于生成启动画面?:
- 我们建议您至少提供两个图标:192 像素和 512 像素的启动画面图标。我们了解到,您认为启动画面上的图标太小。在 Chrome 71 或更高版本中生成的 WebAPK 将在启动画面上显示较大的图标。只要提供推荐的图标,您无需采取任何措施。
- 如果用户已安装相应网站的原生应用,会怎么样?
- 与目前的“添加到主屏幕”功能一样,用户将能够独立于任何原生应用添加网站。如果您希望用户可能同时安装这两者,建议您将网站的图标或名称与原生应用区分开来。
- 如果用户清除 Chrome 的缓存,我已安装的网站的存储空间会被清除吗?
- 是。
- 我换新设备后,应用会重新安装吗?
- 目前还不行,但我们认为这是一个重要的领域,正在研究实现此功能的方法。
- 如何处理权限?我会看到 Chrome 提示还是 Android 提示?
- 权限仍将通过 Chrome 进行管理。用户会看到 Chrome 提示授予权限,并且可以在 Chrome 设置中修改这些权限。
- 这适用于哪些 Android 版本?
- 渐进式 Web 应用可安装在运行 Chrome(Android 版)的所有 Android 版本上,尤其是 Jelly Bean 及更高版本。
- 这是否使用了 WebView?
- 否,网站会在用户添加该网站时所用的 Chrome 版本中打开。
- 我们可以将创建的 APK 上传到 Play 商店吗?
- 不可以。如果您想上传自己的 APK,请参阅受信任的网站活动。
- Play 商店中会上架吗?
- 不可以。如果您想上传自己的 APK 以在 Play 商店中上架,请查看 Trusted Web Activity。
- 我是 Android 上其他浏览器的开发者,可以使用这种无缝安装流程吗?:
- 我们正在努力解决此问题。我们致力于为 Android 上的所有浏览器提供此功能,并会尽快提供更多详细信息。