【问题标题】:Web push notification service worker designWeb 推送通知服务工作者设计
【发布时间】:2016-07-30 14:49:39
【问题描述】:

我有一个服务工作者,它能够从我们的服务器接收推送事件,到目前为止一切正常。当前版本的 Chrome 不支持接收到的通知中的数据负载。因此,我需要在推送事件发生后从服务器获取有关通知的信息(标题、文本、..)。

为了确保用户不会收到两次相同的通知,我将他尚未收到的“待处理”通知的 ID 保存在一个数组中。每次 Service Worker ping 服务器时,都会从数组中获取并删除数组中的最后一项。

问题是,如果在发送过程中或服务工作者在获取通知时抛出任何异常,服务工作者会落后一个通知,这意味着例如如果只有一个新的待处理通知,则该数组始终包含 2 个项目。

我应该如何处理?

【问题讨论】:

    标签: javascript web-push


    【解决方案1】:

    ServiceWorker 捕获到push 事件后,通知被视为发送给 GCM ;无论输出如何(即已显示提取良好的通知,或在提取过程中发生错误)。

    尽管如此,当您从服务器获取每个通知内容时,您可以在服务器端处理“已获取”标志。这样,一次 fetch 可以返回 n 个有效负载,然后您的 ServiceWorker 可以在单个 push 事件中生成 n self.registration.showNotification()。

    最后,如果在向 GCM 发送通知时出现error occurred,即Internal Server Error,则必须重试向 GCM 的请求。但是,如果您的请求成功,但您的 ServiceWorker 从未收到 push 事件,那么您必须考虑您的通知已丢失...

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 1970-01-01
      • 2019-03-17
      • 2018-02-10
      • 2020-02-15
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多