启动处理程序 API
启动处理程序 API 允许开发者控制渐进式 Web 应用 (PWA) 的启动方式——例如,它是否使用现有窗口或创建新窗口,以及如何处理应用的启动目标 URL。
概念与用法
您可以通过在 Web 应用清单文件中添加 launch_handler 字段来指定应用的启动行为。该字段有一个子字段 client_mode,其中包含一个字符串值,指定应用应如何启动和导航。例如:
{
"launch_handler": {
"client_mode": "focus-existing"
}
}
如果未指定,默认的 client_mode 值为 auto。可用值为:
focus-existing-
将选择最近与 Web 应用窗口中的浏览上下文进行交互的上下文来处理启动。这会将启动目标 URL 填充到传递给
window.launchQueue.setConsumer()回调函数的LaunchParams对象的targetURL属性中。正如您将在下面看到的,这允许您为您的应用设置自定义的启动处理功能。 -
将最近与 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-
当使用
focus-existing、navigate-new或navigate-existing的launch_handlerclient_mode值启动渐进式 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.slice(1);
audio.play();
}
}
});
}
此代码包含在 PWA 中,并在应用加载时、启动时执行。window.launchQueue.setConsumer() 的回调函数从 LaunchParams.targetURL 中提取搜索参数,如果找到 track 参数,则使用它来填充 <audio> 元素的 src 并播放该元素指向的音频轨道。
有关完整的可运行代码,请参阅 Musicr 2.0 演示应用。
规范
| 规范 |
|---|
| Web 应用启动处理程序 API # launchqueue-interface |
浏览器兼容性
加载中…