Chrome 如何处理 Web 应用 Manifest 的更新

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

安装 PWA 后,浏览器会使用 Web 应用 Manifest 中的信息来获取应用名称、应用应使用的图标以及启动应用时应打开的网址。但是,如果您需要更新应用快捷方式或尝试新的主题颜色会怎么样?这些更改何时以及如何在浏览器中反映出来?

在大多数情况下,更改应在 PWA 启动后一两天内反映出来,前提是 Manifest 已更新。

桌面版 Chrome 上的更新

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

如果 Manifest 中的选定属性已更改(请参阅下面的列表),Chrome 会将新的 Manifest 排入队列,并在所有窗口都关闭后安装它。安装后,除 icons 之外,新 Manifest 中的所有字段都会更新。

哪些属性会触发更新?

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

更新 display 字段时会发生什么?

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

测试 Manifest 更新

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

要手动强制 Chrome 检查更新后的 Manifest,您可以启动 Chrome 并使用命令行标志 --disable-manifest-update-throttle 或重启 Chrome(使用 about://restart),这将重置计时器,以便 Chrome 在下次 PWA 启动时检查更新后的 Manifest。然后启动 PWA。关闭 PWA 后,它应该使用新的 Manifest 属性进行更新。

参考资料

Android 版 Chrome 上的更新

当 PWA 启动时,Chrome 会确定上次检查本地 Manifest 是否发生更改的时间。如果最近 24 小时内 Manifest 尚未检查,则 Chrome 将安排对 Manifest 发出网络请求,然后将其与本地副本进行比较。

如果 Manifest 中的选定属性已更改(请参阅下面的列表),Chrome 会将新的 Manifest 排入队列,并在 PWA 的所有窗口都已关闭、设备已插入电源并连接到 WiFi 后,Chrome 会从服务器请求更新的 WebAPK。更新后,将使用新 Manifest 中的所有字段。

哪些属性会触发更新?

  • name
  • short_name
  • icons
  • background_color
  • display
  • orientation
  • scope
  • shortcuts
  • start_url
  • theme_color
  • web_share_target

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

测试 Manifest 更新

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

要手动安排 Manifest 更新,覆盖计时器和本地 Manifest,请执行以下操作

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

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

参考资料