启动处理程序 API

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

启动处理程序 API 允许开发者控制渐进式 Web 应用 (PWA) 的启动方式——例如,它是否使用现有窗口或创建新窗口,以及如何处理应用的目标启动 URL。

概念和用法

你可以通过将 launch_handler 字段添加到你的 Web 应用清单文件中来指定应用的启动行为。此字段包含一个子字段 client_mode,其中包含一个字符串值,用于指定应用应如何启动和导航。例如

json
"launch_handler": {
    "client_mode": "focus-existing"
}

如果未指定,则默认的 client_mode 值为 auto。可用值包括:

focus-existing

选择 Web 应用窗口中最近交互过的浏览上下文来处理启动。这将在传递到 window.launchQueue.setConsumer() 的回调函数中的 LaunchParams 对象的 targetURL 属性中填充目标启动 URL。如下所示,这允许你为你的应用设置自定义启动处理功能。

将 Web 应用窗口中最近交互过的浏览上下文导航到目标启动 URL。目标 URL 仍可通过 window.launchQueue.setConsumer() 获取,以便实施其他自定义启动导航处理。

在 Web 应用窗口中创建一个新的浏览上下文以加载目标启动 URL。目标 URL 仍可通过 window.launchQueue.setConsumer() 获取,以便实施其他自定义启动导航处理。

auto

用户代理决定什么最适合平台。例如,在移动设备上,navigate-existing 可能更有意义,因为移动设备上通常只有一个应用实例,而在桌面环境中,navigate-new 可能更有意义。如果提供的值为无效值,则使用此默认值。

当使用 focus-existing 时,可以在 window.launchQueue.setConsumer() 的回调函数内包含代码,以提供对 targetURL 的自定义处理。

js
window.launchQueue.setConsumer((launchParams) => {
  // Do something with launchParams.targetURL
});

注意: LaunchParams 还有一个 LaunchParams.files 属性,它返回一个 FileSystemHandle 对象的只读数组,这些对象表示通过 POST 方法与启动导航一起传递的任何文件。这允许实施自定义文件处理。

接口

LaunchParams

在 PWA 中实现自定义启动导航处理时使用。当调用 window.launchQueue.setConsumer() 来设置启动导航处理功能时,setConsumer() 内的回调函数会传递一个 LaunchParams 对象实例。

LaunchQueue

当使用 launch_handlerclient_mode 值为 focus-existingnavigate-newnavigate-existing 启动渐进式 Web 应用 (PWA) 时,LaunchQueue 提供对功能的访问,这些功能允许在 PWA 中实现自定义启动导航处理。此功能由传递到 setConsumer() 回调函数中的 LaunchParams 对象的属性控制。

对其他接口的扩展

window.launchQueue

提供对 LaunchQueue 类的访问,该类允许在渐进式 Web 应用 (PWA) 中实现自定义启动导航处理,处理上下文由 launch_handler 清单字段 client_mode 值表示。

示例

js
if ("launchQueue" in window) {
  window.launchQueue.setConsumer((launchParams) => {
    if (launchParams.targetURL) {
      const params = new URL(launchParams.targetURL).searchParams;

      // Assuming a music player app that gets a track passed to it to be played
      const track = params.get("track");
      if (track) {
        audio.src = track;
        title.textContent = new URL(track).pathname.substr(1);
        audio.play();
      }
    }
  });
}

此代码包含在 PWA 中,并在应用加载时(启动时)执行。 window.launchQueue.setConsumer() 的回调函数从 LaunchParams.targetURL 中提取搜索参数,如果找到 track 参数,则使用它来填充 <audio> 元素的 src 并播放此参数指向的音频轨道。

有关完整的代码示例,请参阅 Musicr 2.0 演示应用。

规范

规范
Web 应用启动处理程序 API
# launchqueue-interface

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅