存储/管理同一用户在多个设备上的PWA推送通知订阅数据?

7
也许我误解了什么,但是我读过的每篇文章/教程关于推送通知的内容似乎都忽略了这个细节。
供参考,web-pushsendNotification方法接受pushSubscriptionpayloadoptions
为了在任何时候向用户发送通知,用户的pushSubscription数据需要存储在数据库中,并在需要时检索使用,对吗?因此,如果用户为多个设备启用了推送通知,则需要为每个设备存储pushSubscription数据。
我的问题是...你如何知道例如一个设备不再使用,以便您可以删除旧的pushSubscription数据?或者,出于任何原因,PushManager为同一用户+设备生成了新的pushSubscription...您如何知道要用新的替换旧的pushSubscription
解决方案是为用户构建设备管理器,以管理每个设备及其关联的推送订阅吗?
1个回答

0

我认为你说得对 -- 一个好的实现方式是在支持推送通知的浏览器中显示。另一种方式是,如果当前使用的浏览器没有启用推送通知,则提示启用推送通知。

过期:HTTP 410已消失

我发现当推送通知消失时,推送终点将返回HTTP 410已消失状态码。因此,如果我在推送尝试中收到这个响应,我会删除该推送条目。

Microsoft Edge通过HTTP 406限制速率

顺便说一下,我在实践中发现,Microsoft Edge推送服务器经常会返回HTTP 406不可接受的状态码,如果您发送太多通知。因此,在发送了许多通知的应用程序中,我们会向用户提醒这个问题。以下是该响应的示例:

{
  "name": "WebPushError",
  "message": "Received unexpected response code",
  "statusCode": 406,
  "headers": {
    "content-length": "0",
    "retry-after": "900",
    "x-wns-notificationstatus": "appthrottled",
    "x-wns-status": "appthrottled",
    "x-wns-msg-id": "_redacted_",
    "x-wns-debug-trace": "_redacted_",
    "ms-cv": "_redacted_.0",
    "strict-transport-security": "max-age=31536000; includeSubDomains",
    "date": "Fri, 21 Oct 2022 15:55:28 GMT",
    "connection": "close"
  },
  "body": "",
  "endpoint": "https://wns2-bl2p.notify.windows.com/w/?token=_redacted_"
}

我很惊讶地发现,在大局上实施推送通知并没有太多实质性的技术文章。一旦你进入细节,它并不太糟糕,但毫无疑问,这是一个需要更多文档和讨论的领域。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接