Chrome 如何处理 Web 应用清单的更新

为 PWA 更改图标、快捷方式、颜色和其他元数据所需的操作

安装 PWA 后,浏览器会使用 Web 应用清单中的信息作为应用名称、应用应使用的图标,以及应用在启动时应打开的网址。但是,如果您需要更新应用快捷方式或尝试新的主题颜色,该怎么办?这些更改何时以及如何在浏览器中体现?

在大多数情况下,更改应在 PWA 启动的一两天内(即清单更新后)反映出来。

桌面版 Chrome 中的更新

启动 PWA 或在浏览器标签页中打开 PWA 时,Chrome 会确定上次检查本地清单是否发生更改的时间。如果自浏览器上次启动以来未检查该清单,或者在过去 24 小时内未检查该清单,Chrome 将为该清单发出网络请求,然后将其与本地副本进行比较。

如果清单中的部分属性已更改(请参见下面的列表),Chrome 会将新清单加入队列,并在所有窗口关闭后安装新清单。安装后,新清单中的所有字段(nameshort_nameicons 除外)都会更新。

哪些媒体资源会触发更新?

  • display(见下文)
  • scope
  • shortcuts
  • start_url
  • theme_color
  • file_handlers

当更新 display 字段时,会发生什么情况?

如果您将应用的显示模式从 browser 更新为 standalone,那么在更新后,现有用户将不会在窗口中打开他们的应用。Web 应用有两种显示设置,一种是清单中的设置(由您控制),另一种是用户控制的窗口/浏览器标签页设置。始终会遵循用户偏好设置。

测试清单更新

chrome://web-app-internals 页面(适用于 Chrome 85 或更高版本)包含有关设备上安装的所有 PWA 的详细信息,可帮助您了解清单的上次更新时间、更新频率等。

如需手动强制 Chrome 检查更新的清单,您可以使用命令行标记 --disable-manifest-update-throttle 启动 Chrome 或重启 Chrome(使用 about://restart)。此操作会重置计时器,以便 Chrome 在下次启动 PWA 时检查更新后的清单。然后启动 PWA。关闭 PWA 后,应使用新的清单属性对其进行更新。

参考编号

Chrome(Android 版)更新

启动 PWA 时,Chrome 会确定上次检查本地清单是否有更改的时间。如果在过去 24 小时内未检查过清单,Chrome 将为清单安排网络请求,然后将其与本地副本进行比较。

如果清单中的部分属性已更改(请参见下面的列表),Chrome 会将新清单加入队列,在 PWA 的所有窗口关闭后,设备已插好电源并连接到 Wi-Fi,Chrome 会向服务器请求更新后的 WebAPK。更新后,系统将使用新清单中的所有字段。

哪些媒体资源会触发更新?

  • background_color
  • display
  • orientation
  • scope
  • shortcuts
  • start_url
  • theme_color
  • web_share_target

如果 Chrome 无法从服务器获取更新后的清单,则可能需要将检查间隔的时间增加到 30 天。

测试清单更新

about://webapks 页面包含有关设备上安装的所有 PWA 的详细信息,并且可以告知您清单的上次更新时间、更新频率等。

如需手动安排对清单的更新,替换计时器和本地清单,请执行以下操作:

  1. 为设备插上电源,确保连接到 Wi-Fi。
  2. 使用 Android 任务管理器关闭 PWA,然后使用 Android 设置中的“应用”面板强行停止 PWA。
  3. 在 Chrome 中,打开 about://webapks,然后点击相应 PWA 的“更新”按钮。“更新状态”应变为“待处理”。
  4. 启动 PWA,并验证其是否正确加载。
  5. 使用 Android 任务管理器关闭 PWA,然后使用 Android 设置中的“应用”面板强行停止 PWA。

PWA 通常会在几分钟内更新,更新完成后,“更新状态”应更改为“成功”

参考编号