我正在编写一个需要发送通知的web应用程序。它每30秒检查12件不同的东西,如果其中一件符合标准,它应该发送通知;然后它不应该发送另一个通知,直到下一个30分钟(一小时半)的间隔。如何检查通知是否已发送,并不再发送?我以为这是通过标签完成的,但仍然会弹出两个具有相同标签的通知,第二个将取代第一个。
用于生成通知的功能是
function randomNotification(whoisit, tagtoPass) {
var message = whoisit + " is getting a notification";
var options = {
body: message,
icon: 'logo.png',
tag: tagtoPass,
}
var n = new Notification('Website Says:',options);
setTimeout(n.close.bind(n), 5000);
}
该函数是从另一个脚本调用的,该脚本每30秒通过Ajax加载一次。该脚本检查数据库,查看12件事中是否有一件处于需要通知的状态,然后调用该函数,并在30分钟的时间间隔内传递名称和唯一标记。
我还注意到,这段代码基于Mozilla关于通知API的开发人员文档,没有将通知添加到OSX通知中心。
您是否考虑过在localStorage中使用标志来存储上次发送通知的时间?
假设您存储了发送第一个通知的时间,然后再次检查它,如果它足够旧,则发送另一个通知并更新该标志。
即使刷新网页,localStorage数据也会保留。
示例:
localStorage.setItem("last_notification", timestamp)
localStorage.getItem("last_notification")
参考:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage