我一直在关注HTML通知和服务工作者的状态,并想知道是否可以延迟显示通知。基本上,我希望能够说“30分钟后提醒我”(或其他时间),然后在30分钟后向用户推送通知。这可以立即安排,但我没有看到任何允许此功能的功能。
我是否遗漏了什么,还是在当前状态下(特别是Chrome API方面)不可能实现?
我一直在关注HTML通知和服务工作者的状态,并想知道是否可以延迟显示通知。基本上,我希望能够说“30分钟后提醒我”(或其他时间),然后在30分钟后向用户推送通知。这可以立即安排,但我没有看到任何允许此功能的功能。
我是否遗漏了什么,还是在当前状态下(特别是Chrome API方面)不可能实现?
setTimeout
或setInterval
来唤醒自己。浏览器会关闭工作者,并不会记录任何超时或间隔。您可以通过来自打开标签页的消息来唤醒它,但是您说您不想保持打开标签页,如果您假设有一个打开的标签页,那么为什么还要使用服务工作者呢?正如Jeff Posnick在评论中建议的那样,您或许可以最终使用Sync或PeriodicSync API,但是正如他所指出的那样,它们尚未实现,而且本身也不是为此而设计的。最后一部分可能有些麻烦,因为目前实际上无法使用任何类型的负载发送推送,因此您的服务工作者需要找到某种方法来确定通知应该是什么。也许服务器有一个已暂停通知的列表,服务工作者可以从那里获取,或者您将它们保存在IndexedDB中。
<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>