如何测试pushsubscriptionchange事件处理代码?

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

pushsubscriptionchange当推送通知服务器希望客户端重新订阅时,浏览器会触发该事件.如何手动触发此事件进行测试?

mjs*_*mjs 5

不幸的是,无法对此功能进行任何端到端测试。你能做的最好的事情就是通过 Service Worker 的 JS 触发事件:

function triggerSubscriptionChange() {
  registration.pushManager.getSubscription().then(subscription => {
    if (subscription) {
      console.log("subscribed, subscription", subscription);
      return subscription.unsubscribe();
    }
  }).then(() => {
    console.log("unsubscribed");
    return registration.pushManager.subscribe({
      userVisibleOnly: true
    });
  }).then(subscription => {
    console.log("subscribed, subscription", subscription);
    self.dispatchEvent(new ExtendableEvent("pushsubscriptionchange"));
  });
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*rco 5

当用户删除并重新授予推送权限时也会触发该事件(请参阅https://github.com/w3c/push-api/issues/116)。

例如,在 Firefox 中,您可以单击站点标识图标,在“权限”部分中,为“接收通知”选择“阻止”,然后选择“允许”。

pushsubscriptionchange将触发一个事件。

推送订阅更改事件

  • 尝试了这个,事件没有触发...我还看到https://github.com/w3c/push-api/issues/116 open (3认同)