В сервисном работнике прослушайте глобальное событие push
, чтобы обработать ваше уведомление вручную.
Затем вызовите метод showNotification()
для отображения уведомления.
В объекте параметров вы можете указать список кнопок действий, которые будут иметь ваши уведомления.
self.addEventListener("push", event => {
const {title, body} = JSON.parse(event.data.text());
event.waitUntil(self.registration.showNotification(title, {
body,
actions: [{
action: "delete",
title: "Delete"
}, {
action: "markAsRead",
title: "Mark as read"
}],
}));
});
Прослушивание события notificationclick
для обработки нажатий на кнопки действий или само уведомление:
self.addEventListener("notificationclick", event => {
// Hide the notification
event.notification.close();
switch (event.notification.data.action) {
// If an action button has been clicked
case "delete":
case "markAsRead":
// Send some request to your server
break;
// User haven't clicked any action buttons, only the notification itself
default:
// Opening a tab
clients.openWindow("/");
}
});