Javascript 单击通知打开已安装的PWA
实际上,当用户单击后端生成的通知时,我会打开一个新窗口,这在浏览器上效果很好,因为它会在浏览器打开时打开一个新选项卡,否则会打开一个新窗口 但是如果我安装了PWA,在收到通知时单击它打开一个新的浏览器窗口,而不是打开PWA 以下是我的通知单击事件代码: 如果PWA是打开的,我调用focus()然后导航(url),但是如果PWA是关闭的,我就不能打开PWA然后调用focus和navigate函数Javascript 单击通知打开已安装的PWA,javascript,notifications,service-worker,progressive-web-apps,Javascript,Notifications,Service Worker,Progressive Web Apps,实际上,当用户单击后端生成的通知时,我会打开一个新窗口,这在浏览器上效果很好,因为它会在浏览器打开时打开一个新选项卡,否则会打开一个新窗口 但是如果我安装了PWA,在收到通知时单击它打开一个新的浏览器窗口,而不是打开PWA 以下是我的通知单击事件代码: 如果PWA是打开的,我调用focus()然后导航(url),但是如果PWA是关闭的,我就不能打开PWA然后调用focus和navigate函数 event.waitUntil(clients.matchAll({ type: "w
event.waitUntil(clients.matchAll({
type: "window"
}).then(function (clientList) {
console.log('clientList: ', clientList);
if (data.WebUrl) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
console.log('client: ', JSON.stringify(client), client);
if ('focus' in client) {
client.focus();
// try to navigate to the url in the focused client
client.navigate(data.WebUrl).then((response) => {
event.notification.close();
});
break;
}
else {
clients.openWindow(data.WebUrl);
event.notification.close();
}
}
}
}));
event.waitill(clients.matchAll({
类型:“窗口”
}).then(函数(客户端列表){
log('clientList:',clientList);
if(data.WebUrl){
对于(var i=0;i{
event.notification.close();
});
打破
}
否则{
clients.openWindow(data.WebUrl);
event.notification.close();
}
}
}
}));
如果有办法以编程方式打开PWA?我最终能够通过以下方式实现我想要的:
event.waitUntil(clients.matchAll({
type: "window",
includeUncontrolled: true
}).then(function (clientList) {
if (data.WebUrl) {
let client = null;
for (let i = 0; i < clientList.length; i++) {
let item = clientList[i];
if (item.url) {
client = item;
break;
}
}
if (client && 'navigate' in client) {
client.focus();
event.notification.close();
return client.navigate(data.WebUrl);
}
else {
event.notification.close();
// if client doesn't have navigate function, try to open a new browser window
return clients.openWindow(data.WebUrl);
}
}
}));
event.waitill(clients.matchAll({
键入:“窗口”,
includeUncontrolled:正确
}).then(函数(客户端列表){
if(data.WebUrl){
让client=null;
for(设i=0;i
通过以下几点,我终于实现了我的目标:
event.waitUntil(clients.matchAll({
type: "window",
includeUncontrolled: true
}).then(function (clientList) {
if (data.WebUrl) {
let client = null;
for (let i = 0; i < clientList.length; i++) {
let item = clientList[i];
if (item.url) {
client = item;
break;
}
}
if (client && 'navigate' in client) {
client.focus();
event.notification.close();
return client.navigate(data.WebUrl);
}
else {
event.notification.close();
// if client doesn't have navigate function, try to open a new browser window
return clients.openWindow(data.WebUrl);
}
}
}));
event.waitill(clients.matchAll({
键入:“窗口”,
includeUncontrolled:正确
}).then(函数(客户端列表){
if(data.WebUrl){
让client=null;
for(设i=0;i
有什么解决方案吗?我也在寻找同样的方法。我希望它能帮助你:有什么解决办法吗?我也在寻找同样的产品。我希望它能帮助您: