javascript - notificationclick事件服务 worker

标签 javascript push-notification service-worker workbox

我正在与服务人员一起在我的用户之间显示通知。在我的代码中,我包含了notificationclick事件。通过此事件,我试图处理两种情况。第一种情况,如果在浏览器中打开了我的网站页面,请不要打开它,而应专注于它。第二种情况,如果我的浏览器没有显示我的网站,请打开它并关注它。但是我还没有成功...


这是我当前的代码:

self.addEventListener('notificationclick', function (e) {
    console.log('notification was clicked')
    var notification = e.notification;
    var action = e.action;

    if (action === 'close') {
        notification.close();
    } else {
        // This looks to see if the current is already open and
        // focuses if it is
        e.waitUntil(
            self.clients.matchAll().then(function(clientList) {
                console.log(clientList)
                if (clientList.length > 0) {
                    console.log(clientList[0])
                    return clientList[0].focus();
                }
                return self.clients.openWindow('/');
            })
       );
   };
});

最佳答案

self.addEventListener("notificationclick", (event) => {
    event.waitUntil(async function () {
        const allClients = await clients.matchAll({
            includeUncontrolled: true
        });
        let chatClient;
        let appUrl = 'xyz';
        for (const client of allClients) {
        //here appUrl is the application url, we are checking it application tab is open
            if(client['url'].indexOf(appUrl) >= 0) 
            {
                client.focus();
                chatClient = client;
                break;
            }
        }
        if (!chatClient) {
            chatClient = await clients.openWindow(appUrl);
        }
    }());
});

关于javascript - notificationclick事件服务 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52225110/

相关文章:

javascript - 为什么,当我在循环中添加一堆事件监听器时,每个元素都会触发最后添加的监听器?

ios - 我想在应用程序的非事件模式下接收通知时在主应用程序图标上增加角标(Badge)

Android:在应用程序的设备中管理多个推送通知

javascript - 确定 fetchEvent 的来源

javascript - 即使在加载新版本后,Service Worker 仍可能显示旧版本应用程序的情况?

odoo 12 中的 JavaScript

javascript - jQuery slider 在 Chrome 上不起作用(有间隔)

带有对象声明和 IN 保留字的 Javascript for() 循环 - 只是在寻找一些说明

ios - iOS 有 'Notification Listener' 吗?

php - 将 Laravel 用于服务 worker ?