Files
Sheep-Service/web/sw.js
2025-09-09 00:10:53 +03:00

56 lines
1.7 KiB
JavaScript

self.addEventListener('install', async event => {
})
self.addEventListener('activate', async event => {
})
self.addEventListener('fetch', event => {
})
// Обработка входящих push-сообщений
self.addEventListener("push", event => {
let data = {};
try {
data = event.data.json(); // если сервер прислал JSON
} catch {
data = { title: "Уведомление", body: event.data?.text() };
}
console.log(data);
const title = data.title || "Уведомление";
const options = {
body: data.body || "",
icon: "/img/icon.png", // иконка уведомления
badge: "/img/badge.png", // маленький значок (Android)
data: data.url || "/" // можно передать URL
};
event.waitUntil(
self.registration.showNotification(title, options)
);
});
// Обработка клика по уведомлению
self.addEventListener("notificationclick", event => {
event.notification.close();
event.waitUntil(
clients.matchAll({ type: "window", includeUncontrolled: true }).then(clientList => {
// если вкладка уже открыта — фокусируем её
for (const client of clientList) {
if (client.url === event.notification.data && "focus" in client) {
return client.focus();
}
}
// иначе открываем новую вкладку
if (clients.openWindow) {
return clients.openWindow(event.notification.data);
}
})
);
});