通知点击事件服务工作者

Posted

技术标签:

【中文标题】通知点击事件服务工作者【英文标题】:notificationclick event service worker 【发布时间】:2018-09-07 14:56:30 【问题描述】:

我正在与服务人员合作以在我的用户之间显示通知。在我的代码中,我包含了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('/');
            )
       );
   ;
);

【问题讨论】:

【参考方案1】:
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);
        
    ());
);

【讨论】:

我们需要在哪个地方放置这段代码。服务人员或内部项目 @satish Kumar 你可以在服务工作者注册文件中添加这个 嘿,有人成功了吗?我应付不来。使用 event.waitUntil 和不使用该事件都不会触发。什么也没发生。请帮忙:)

以上是关于通知点击事件服务工作者的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送通知中添加点击事件?

Xamarin:BroadCastReceiver 通过打开弹出窗口的点击事件发送通知

推送通知中的 Service Worker 跟踪

Firebase 消息传递服务工作人员点击处理程序不起作用

如何在 Windows 通知上收听点击事件?

在通知点击事件时调用活动