【问题标题】:How to schedule a chrome push notification?如何安排 chrome 推送通知?
【发布时间】:2023-03-29 16:45:01
【问题描述】:

我正在为我的网站用户实施 chrome 推送通知。我可以通过服务人员成功地做到这一点。我正在关注这些文章/教程

  1. https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en
  2. http://www.html5rocks.com/en/tutorials/service-worker/introduction/

当我想现在发送通知时,这非常有效,即没有安排未来。

我的问题:

我想在当天晚些时候安排此通知可能会重复出现,我可以通过 cron 来完成。但是 GCM 不会像 https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en 和我引用的那样向您发送有效载荷。

当前在 Chrome 中实现 Push API 的一个缺点是您无法通过推送消息发送任何数据。不,什么都没有。这样做的原因是,在未来的实现中,必须在您的服务器上对有效负载数据进行加密,然后才能将其发送到推送消息端点。这样,无论是什么推送提供者,端点都将无法轻松查看推送消息的内容。这还可以防止其他漏洞,例如 HTTPS 证书验证不佳以及服务器和推送提供程序之间的中间人攻击。但是,目前尚不支持这种加密,因此您需要同时执行一次获取以获取填充通知所需的信息。

因此,我无法弄清楚我在浏览器中收到了哪个预定通知的推送事件。因为可能有多个通知发送到 GCM。

我正在获取 通知 表中的最后一条记录,即我总是显示最后一条记录数据。因为我不知道我在 chrome 浏览器中收到推送事件的通知。

我的问题:

是否有解决方法来安排通知并向客户端/浏览器显示正确的通知?甚至可以在原生 chrome push api 中使用吗?

【问题讨论】:

    标签: javascript google-chrome google-cloud-messaging web-push push-api


    【解决方案1】:

    通过始终提供最新数据,您已经尽了最大努力。您可以考虑的一种替代方法是跟踪客户端已被告知哪些事件,并在每次获取信息时移至​​下一个事件。当然,这确实有可能不同步。

    我们计划在 Chrome 49 中提供对数据有效负载的支持(应该会在 3 月份进入稳定通道)。这允许您在消息中包含最多 4KB 的数据,应该可以解决您的问题。

    请注意,使用有效负载将要求您加密消息中包含的数据。我们将在发布时提供一篇内容丰富的文章(类似于您链接到的文章)和库。

    【讨论】:

    • 关于何时支持数据有效负载登陆 Canary/Beta/Stable 构建的任何更新?
    【解决方案2】:

    当您获取通知数据时,您可以将此条目标记为已读,或将其删除。这样做可以实现当有两条消息供用户显示时,第一个 fetch 请求获取第一条未读消息并将其标记为已读,第二个不能获取前一条消息,因为它已经被标记.

    另一种解决方案是在一个fetch 请求中获取所有 条未读消息,并将它们全部显示给用户。这样做,您可能会得到什么都不做的“空”推送。

    【讨论】:

      【解决方案3】:

      谷歌浏览器目前正在测试新的Notification Triggers API,它可以做到这一点。

      这是一个示例(来自上面的链接),它在约会前 10 分钟安排提醒:

      async function createAppointment(tag, title, timestamp) {
        // .. create the appointment in application-level code ..
      
        // Schedule a reminder to be shown to the user:
        await swRegistration.showNotification(title, {
          tag, body: 'Your appointment is due in ten minutes!',
          showTrigger: new TimestampTrigger(timestamp - TEN_MINUTES)
        });
      }
      

      您可以通过注册原始试用版here 立即在您的网站上启用通知触发器 API。

      【讨论】:

      • API 目前在标志后面可用,但很快将进入新的原始试验。详情请参阅article
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2014-12-07
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多