При получении нового веб-push-уведомления сначала показывается самое последнее, предшествующее новому. - PullRequest
0 голосов
/ 06 июня 2019

Я только начал возиться с API уведомлений в одном из моих приложений React, и я наткнулся на что-то действительно странное, из-за чего я не смог найти выход из Google. Я разрешил уведомления с моего сайта, и я получаю уведомления, когда я их запускаю ... Но каждый раз, когда я получаю новое уведомление, оно показывает уведомление, полученное до него.

Так что, если я отправил всего 5 уведомлений, и теперь я запускаю 6-е. Сначала будет показан № 5, а затем № 6. Если я вызову еще один, он сначала покажет № 6, а затем № 7. Единственный способ выйти из этого беспорядка - это вручную очистить мою историю уведомлений, затем вызвать новое уведомление, тогда будет отображаться только новый # 1. Но если я потом активирую другой, он покажет # 1, прежде чем # 2 снова.

Кто-нибудь знает, почему это происходит? До сих пор я не смог найти кого-либо с такой же проблемой.

Вот код:

notify(item) {
    if (this.state.notificationsEnabled) {
        new Notification("Item found!", {body: item.character + " (" + item.account + ") has found a " + item.name + " at level " + item.level + "! (Current rank: " + item.rank + ")"});
    }
}

toggle() {
    if (!("Notification" in window)) {
        alert("This browser does not support system notifications!");
    } else if (Notification.permission === 'granted') {
        this.setState({ notificationsEnabled: !this.state.notificationsEnabled});
    } else if (Notification.permission !== 'denied') {
        Notification.requestPermission().then((permission) => {
            if (permission === 'granted') {
                this.setState({notificationsEnabled: true});
            }
        });
    }
}

Функция уведомления запускается вручную, и передаются данные, используемые уведомлением. Функция переключения связана с переключателем включения / выключения, который пользователь включает, чтобы активировать уведомления, если разрешение не было предоставлено ранее, в противном случае он просто переключает переменную состояния, которая контролирует, будут ли данные, передаваемые в уведомление, создавать фактическое уведомление или нет.

...