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

时间:2016-04-13 14:51:33

标签: web-push progressive-web-apps

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

2 个答案:

答案 0 :(得分:3)

不幸的是,不可能对此功能进行任何端到端测试。您可以做的最好的事情是通过服务工作者的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"));
  });
}

答案 1 :(得分:3)

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

例如,在Firefox中,您可以在" Permission"中点击网站标识图标。部分,选择" Block"为"接收通知",然后选择"允许"。

将触发pushsubscriptionchange事件。

pushsubscriptionchange event

相关问题