我应该如何处理pushsubscriptionchange事件?

mjs*_*mjs 5 web-push progressive-web-apps

根据规范pushsubscriptionchange事件表明“推送订阅已失效,或即将失效”。处理此事件的最佳做法是什么?

mjs*_*mjs 5

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