Нужно из js скрипта отправлять уведомления при определенном условии, без всяких Service Worker, vapid ключей и проч.
ИИ сгенерил такой код:
// При загрузке страницы запрашиваем разрешение
document.addEventListener('DOMContentLoaded', () => {
if (Notification.permission !== "granted" && Notification.permission !== "denied") {
Notification.requestPermission();
}
});
// Где-то в вашем коде, где срабатывает условие
function checkNewMessages() {
// Предположим, что мы получаем количество новых сообщений
const newMessagesCount = getUnreadMessagesCount();
if (Notification.permission === "granted") {
if (newMessagesCount > 0) {
// Показываем уведомление
const notification = new Notification("Новые сообщения ✉️", {
body: `У вас ${newMessagesCount} непрочитанных сообщений`,
icon: '/images/message-icon.png',
badge: '/images/badge.png',
vibrate: [200, 100, 200]
});
// Обработчик клика по уведомлению
notification.onclick = () => {
window.focus();
window.location.href = '/messages';
};
}
}
// Если разрешения нет - можно показать альтернативное оповещение
else {
console.log("Новые сообщения:", newMessagesCount);
// Здесь можно показать внутреннее уведомление в интерфейсе
}
}
// Пример вызова
setInterval(checkNewMessages, 60000); // Проверка каждую минуту
Но проблема в том, что
1. Для получения разрешения пользователю нужно нажать кнопку или сделать что-то подобное, т е явно подтвердить свое согласие на получение уведомлений
2. Полученное разрешение действует недолго, до следующей перезагрузки сайта по всей видимости.
Есть какие-то способы обойти все это? Или может быть это можно реализовать по другому?