我一直在关注HTML通知和服务工作者的状态,并且想知道 - 是否可以显示延迟通知?基本上,我希望能够说“在30分钟内提醒我”(或其他),然后在30分钟后向用户发送通知。这可以立即安排,但我没有看到任何允许它的功能。
我是否遗漏了某些东西,或者在目前的(特别是)Chrome API状态下是不可能的?
答案 0 :(得分:5)
这对服务工作者来说是可能的,但不是直截了当的,至少目前的形式是这样。这不是直截了当的,因为服务工作者不能让自己保持清醒半小时,或者使用setTimeout
或setInterval
唤醒自己。浏览器将关闭工作人员并且不会记录任何超时或间隔。您可以通过打开的标签中的消息将其唤醒,但您说您不想必须保持打开的标签,如果您假设打开标签,那么为什么甚至打扰服务工作者呢? ?正如Jeff Posnick在评论中所建议的那样,您最终可能会使用Sync或PeriodicSync API,但正如他所指出的那样,它们尚未实现,并且无论如何都不是真正意图。
您可以使用set在当前版本的Chrome中完成您想要的操作,但是您必须将服务器包含在循环中并通过推送进行自我设置通知服务(即GCM)。以下是它的工作原理,粗略地说:
这最后一部分将是一个麻烦,因为目前你实际上无法通过推送发送任何类型的有效负载,因此您的服务工作人员需要某种方式来确定通知应该是什么。也许服务器有一个延后通知列表,服务工作者可以从那里获取它,或者你可能将它们保存在IndexedDB中。
答案 1 :(得分:0)
<script>
var Notification = window.Notification || window.mozNotification || window.webkitNotification;
function show() {
window.setTimeout(function () {
var instance = new Notification("Hello World!");
}, 5000);
return false;
}
</script>
<a href="#" onclick="return show()">Notify me!</a>