Задать вопрос
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый

Как отправлять браузерные уведомления через скрипт js?

Нужно из 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. Полученное разрешение действует недолго, до следующей перезагрузки сайта по всей видимости.

Есть какие-то способы обойти все это? Или может быть это можно реализовать по другому?
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы