首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在网页推送中添加提醒动作?

如何在网页推送中添加提醒动作?
EN

Stack Overflow用户
提问于 2019-09-13 19:17:08
回答 1查看 48关注 0票数 0

当显示我的网络推送通知时,我在我的选项中添加了一个操作,这样用户就可以要求在30分钟后再次收到通知。

代码语言:javascript
复制
  const options = {
    ...,
    actions: [
        {
          action: 'remind-action',
          title: 'Remind again in 30',
          icon: '/remind.png'
        }
    ],
    ....
  }

然后我处理service worker中的操作:

代码语言:javascript
复制
self.addEventListener('notificationclick', function(event) {
  if (!event.action) return

  switch (event.action) {
    ...
    case 'remind-action':
            event.notification.close()
            event.waitUntil(
                new Promise((resolve, reject) => {

                    setTimeout(() => {

                        const options = {
                                ...
                                actions: [
                                    {
                                        action: 'remind-action',
                                        title: 'Remind again in 30',
                                        icon: '/remind.png'
                                    }
                                ],
                                ...
                        }

                        self.registration.showNotification('Reminder', options)
                        resolve(true)

                    }, 30 * 60 * 1000)

                })
            )

      break
  }
})

如果有办法重新发出推送事件就好了。

上面代码的问题是,它不会在30分钟后显示通知,但是如果我将超时设置为1分钟,它就可以正常工作。

我认为有些地方是Chrome忽略了event.waitUntill而扼杀了setTimeout

是什么导致了这个问题?我如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-09-14 17:12:19

浏览器将自动和故意限制您的setTimeouts,以防止滥用和例如。跟踪用户。换句话说,你不能只在客户端实现你想要的东西。

要再次(可靠地)显示通知,您需要从服务器再次发送通知。您将ofc通知服务器,用户希望在x分钟左右得到提醒。

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

https://stackoverflow.com/questions/57922641

复制
相关文章

相似问题

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