首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有后台服务器,24小时后如何触发桌面通知?

没有后台服务器,24小时后如何触发桌面通知?
EN

Stack Overflow用户
提问于 2018-12-16 22:56:28
回答 2查看 1.8K关注 0票数 15

假设:

my website.

  • Service worker已安装并准备就绪,
  1. 用户已允许通知。
  2. 用户设置从现在起24小时后提醒的客户端提醒。
  3. 没有向用户推送通知的后端服务或服务器。

如果没有后台服务器推送通知,如何触发桌面通知?这个是可能的吗?

如果提供了超时/间隔,并且web-alarm/task-scheduler specification尚未准备好使用,则浏览器将关闭服务工作器。有没有一种只有客户端的方法来在将来的某个指定时间触发通知?

有没有严格意义上不是“推送通知”的桌面通知?推送通知本质上是从服务器推送的。可以从客户端触发通知吗?

EN

回答 2

Stack Overflow用户

发布于 2018-12-30 03:04:11

您可以考虑使用localStorage。但是,这仅适用于使用相同设备和浏览器的用户。

下面是一个在页面加载时启动的函数。如果您希望它在整个会话中周期性地发生,您可以将它包装到一个setInterval中并定期检查。这是假设它需要精确到24小时后的毫秒。

代码语言:javascript
复制
// on page load
window.onload = () => {
    const dayMs = 24*60*60*1000; // 1 day in milliseconds
    const notificationTimer = localStorage.getItem('notificationTimer');
    if(notificationTimer){
        const sendNotification = (Date.now() - (new Date(notificationTimer)).getTime()) > dayMs;
        if(sendNotification){
            const notification = new Notification('Displaying next day reminder from yesterday');
        }
    }

};

当用户选择第二天提醒时,您可以设置notificationTimer

代码语言:javascript
复制
localStorage.setItem(notificationTimer, Date.now());

你必须对第二天的提醒做出一些警告,它不能跨浏览器或设备工作,这可能是也可能是不可取的。

票数 6
EN

Stack Overflow用户

发布于 2019-01-03 03:02:33

假设您网站上的通知数据不是从服务器发送的。使用本地存储将是一条可行的道路。

您可以存储一个变量来帮助跟踪用户每次访问您的网站时显示通知的时间:

代码语言:javascript
复制
localStorage.setItem("lastNotification", Date.now());

因此,您可以使用一个脚本来执行以下操作;

代码语言:javascript
复制
function notificationHelper(){
    var lastTime = localStorage.getItem("lastNotification");
    if(Date.now - lastTime > 86400000){

        //Logic to show notication here
        //set a new time at the end of the logic

    }
    //Otherwise Do Nothing
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53803353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档