【问题标题】:How should I handle the pushsubscriptionchange event?我应该如何处理 pushsubscriptionchange 事件?
【发布时间】:2016-08-04 18:24:52
【问题描述】:

According to the spec,pushsubscriptionchange 事件表示“推送订阅已失效,或即将失效”。处理此事件的最佳做法是什么?

【问题讨论】:

    标签: web-push progressive-web-apps


    【解决方案1】:
    1. 完全在 Service Worker 中处理重新订阅。 在触发事件时可能没有与 Service Worker 关联的客户端(即打开的页面)——不要使用postMessage() 触发客户重新订阅。
    2. 实施可能会在一段时间内(可能是几天)兑现旧订阅。虽然规范没有做出这样的保证,但实施可能会在一段时间内同时支持旧密钥和新密钥以减少/消除由于所涉及的客户端或服务器之一未收到“新”密钥而丢弃消息的可能性。
    3. 截至 2016 年 4 月,Chrome 和 Firefox 都不会触发此事件。但是,由于它在规范中,为确保用户继续接收消息,您应该确保正确处理它。

    【讨论】:

    • 你知道chrome是否实现了事件吗?我无法触发它。我每天都在失去订阅,我认为这是因为未触发此事件。 @mjs
    【解决方案2】:

    您可以在此处找到有关处理 pushsubscriptionchange 事件的完整详细说明,其中包含您必须处理的一些陷阱。喜欢:

    • Chrome 目前未实现推送订阅更改。
    • PushSubscriptionChangeEvent 始终为空。如果您想在服务器中替换它,您将无法使用 oldSubscription。

    How to handle WebPush API PushSubscriptionChange event in modern browsers

    【讨论】:

    • 如何测试 PushSubscriptionChangeEvent 是否在在注册我的服务工作者之前在我的普通 javascript 中定义?将来,当规范在所有地方实现时,我只想打扰推送订阅和服务工作者(如果已定义),并告诉用户更新他们的浏览器(如果没有)。
    • 嗨塞尔吉尼奥,它仍然是空的吗? (我的意思是 oldsubscription ?)chrome 仍然不支持 pushsubscriptionchange 事件吗?
    • 我还没有检查 chrome 的最新版本。 4个月前它是空的。我想说什么都没有改变
    • 2021 年还有更好的解决方案或更新吗?这些推送通知的一大优势是即使用户没有访问应用程序也会通知用户。但最好的办法是使用 Serginho 的解决方法。
    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多