Chrome: событие оповещения не запускается - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь запустить код в своем сервисном работнике, как только появляется уведомление. Я отображаю уведомления с использованием этого API:

self.registration.showNotification(title, options)

Я пробовал несколько вещей:

  1. Я надеялся, что возвращенное обещание выполнено с объектом Notification тогда я могу делать вещи после того, как это показано. Но обещание, если оно выполнено с undefined.

  2. Я пытался присоединить такую ​​функцию (конечно, перед вызовом showNotification):

    Notification.onshow = function() { console.log('shown')};

, но не срабатывает (https://developer.mozilla.org/en-US/docs/Web/API/Notification/onshow)

Я пытался сделать что-то похожее, чтобы прикрепить обратный вызов к событиям notifictionclick и messagesclose:

self.addEventListener("notificationshow", (event) => {});

Также не работало .

Моя основная задача - получить экземпляр уведомления после его показа, чтобы я мог что-то с ним сделать (например, вызвать notifiaction.close)

1 Ответ

1 голос
/ 25 апреля 2020

Вы можете использовать getNotifications (и фильтровать по тегу, чтобы получить уведомление)

var options = { tag : 'user_alerts' };

navigator.serviceWorker.ready.then(function(registration) {
  registration.getNotifications(options).then(function(notifications) {
    // do something with your notifications
    notifications[0].close();
  }) 
});

https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/getNotifications

...