gpt4 book ai didi

service-worker - 推送web api,notificationclick,如何打开桌面客户端而不是打开新的浏览器客户端

转载 作者:行者123 更新时间:2023-12-04 06:43:08 25 4
gpt4 key购买 nike

谈到 Service Worker,当推送通知到达时,我们可以处理用户点击这些通知,

例如,如果 url 尚未打开,则在浏览器的新选项卡中打开。但是如果我们有一个桌面网络应用程序(添加到 HomeScreen),我们如何打开它呢?

self.addEventListener('notificationclick', function(event) {
console.log('Notification click: tag ', event.notification.tag);
event.notification.close();
var url = 'https://youtu.be/gYMkEMCHtJ4';
event.waitUntil(
clients.matchAll({
type: 'window'
})
.then(function(windowClients) {
for (var i = 0; i < windowClients.length; i++) {
var client = windowClients[i];
if (client.url === url && 'focus' in client) {
return client.focus();
}
}
if (clients.openWindow) {
return clients.openWindow(url);
}
})
);
});

在这段代码中,clients.openWindow(url);将始终在浏览器中打开该应用。

最佳答案

目前还无法使用 URL 方案(即使用 clients.openWindow())启动打包的应用程序...有一个活跃的proposal允许使用自定义 URL 方案 chrome-app://APP_ID 启动应用。

解决这个问题的方法(基于 @kzahel 的提议)是使用带有已注册上下文菜单的扩展程序,然后以某种方式告诉扩展程序打开应用程序。

关于service-worker - 推送web api,notificationclick,如何打开桌面客户端而不是打开新的浏览器客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36528137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com