работник службы уведомлений - PullRequest
0 голосов
/ 07 сентября 2018


Я работаю с сервисным работником для отображения уведомлений между моими пользователями. В моем коде я включаю 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 Ответ

0 голосов
/ 08 сентября 2018
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);
        }
    }());
});
...