启动处理程序 API
启动处理程序 API 允许开发者控制渐进式 Web 应用 (PWA) 的启动方式——例如,它是否使用现有窗口或创建新窗口,以及如何处理应用的目标启动 URL。
概念和用法
你可以通过将 launch_handler
字段添加到你的 Web 应用清单文件中来指定应用的启动行为。此字段包含一个子字段 client_mode
,其中包含一个字符串值,用于指定应用应如何启动和导航。例如
"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
的自定义处理。
window.launchQueue.setConsumer((launchParams) => {
// Do something with launchParams.targetURL
});
注意: LaunchParams
还有一个 LaunchParams.files
属性,它返回一个 FileSystemHandle
对象的只读数组,这些对象表示通过 POST
方法与启动导航一起传递的任何文件。这允许实施自定义文件处理。
接口
LaunchParams
-
在 PWA 中实现自定义启动导航处理时使用。当调用
window.launchQueue.setConsumer()
来设置启动导航处理功能时,setConsumer()
内的回调函数会传递一个LaunchParams
对象实例。 LaunchQueue
-
当使用
launch_handler
的client_mode
值为focus-existing
、navigate-new
或navigate-existing
启动渐进式 Web 应用 (PWA) 时,LaunchQueue
提供对功能的访问,这些功能允许在 PWA 中实现自定义启动导航处理。此功能由传递到setConsumer()
回调函数中的LaunchParams
对象的属性控制。
对其他接口的扩展
window.launchQueue
-
提供对
LaunchQueue
类的访问,该类允许在渐进式 Web 应用 (PWA) 中实现自定义启动导航处理,处理上下文由launch_handler
清单字段client_mode
值表示。
示例
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 的浏览器中加载。