Я только начал возиться с 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});
}
});
}
}
Функция уведомления запускается вручную, и передаются данные, используемые уведомлением. Функция переключения связана с переключателем включения / выключения, который пользователь включает, чтобы активировать уведомления, если разрешение не было предоставлено ранее, в противном случае он просто переключает переменную состояния, которая контролирует, будут ли данные, передаваемые в уведомление, создавать фактическое уведомление или нет.