@sochi-russia

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

Чтобы уведомление после перезагрузки не повторялось, если сообщение человек видел и оно такое же, но если сообщение изменилось, то у человека оно высвечивалось?
<script>
 function sendNotification(title, options) {
// Проверим, поддерживает ли браузер HTML5 Notifications
if (!("Notification" in window)) {
alert('Ваш браузер не поддерживает HTML Notifications, его необходимо обновить.');
}

// Проверим, есть ли права на отправку уведомлений
else if (Notification.permission === "granted") {
// Если права есть, отправим уведомление
var notification = new Notification(title, options);

function clickFunc() {window.location.href = 'http://aviaciya.com/specpredlozheniya_aviakompanij/';}

notification.onclick = clickFunc;
}

// Если прав нет, пытаемся их получить
else if (Notification.permission !== 'denied') {
Notification.requestPermission(function (permission) {
// Если права успешно получены, отправляем уведомление
if (permission === "granted") {
var notification = new Notification(title, options);

} else {
alert('Вы запретили показывать уведомления'); // Юзер отклонил наш запрос на показ уведомлений
}
});
} else {
// Пользователь ранее отклонил наш запрос на показ уведомлений
// В этом месте мы можем, но не будем его беспокоить. Уважайте решения своих пользователей.
}}</script>
<script type="text/javascript" async>
sendNotification('Зимние скидки на авиабилеты!', {
body: 'Распродажа, сезонные скидки',
icon: 'http://avia-avia.ru/image/samolet_p.png',
dir: 'auto'
});</script>
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
@SvizzZzy
Вариант с помощью cookies:
<script>
	
var ok=true;	
var notification_id='123123123123';
var notification_check=readCookie("notification");
if (notification_check==notification_id){ok=false;};

 function sendNotification(title, options) {
 //create cook
createCookie("notification",notification_id,"1");
 if (ok){
// Проверим, поддерживает ли браузер HTML5 Notifications
if (!("Notification" in window)) {
alert('Ваш браузер не поддерживает HTML Notifications, его необходимо обновить.');
}

// Проверим, есть ли права на отправку уведомлений
else if (Notification.permission === "granted") {

	
// Если права есть, отправим уведомление
var notification = new Notification(title, options);

function clickFunc() {window.location.href = 'http://aviaciya.com/specpredlozheniya_aviakompanij/';}

notification.onclick = clickFunc;
}

// Если прав нет, пытаемся их получить
else if (Notification.permission !== 'denied') {
Notification.requestPermission(function (permission) {
// Если права успешно получены, отправляем уведомление
if (permission === "granted") {
var notification = new Notification(title, options);
 
} else {
alert('Вы запретили показывать уведомления'); // Юзер отклонил наш запрос на показ уведомлений
}
});
} else {
// Пользователь ранее отклонил наш запрос на показ уведомлений
// В этом месте мы можем, но не будем его беспокоить. Уважайте решения своих пользователей.
}

 

 }

}


//cookie
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

 


</script>
<script type="text/javascript" async>
sendNotification('Зимние скидки на авиабилеты!', {
body: 'Распродажа, сезонные скидки',
icon: 'http://avia-avia.ru/image/samolet_p.png',
dir: 'auto'
});</script>


Чтобы показать уведомление если оно изменилось, нужно менять значение notification_id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы