【发布时间】:2016-08-04 18:28:21
【问题描述】:
当推送通知服务器希望客户端重新订阅时,浏览器会触发pushsubscriptionchange 事件。如何手动触发此事件进行测试?
【问题讨论】:
标签: web-push progressive-web-apps
当推送通知服务器希望客户端重新订阅时,浏览器会触发pushsubscriptionchange 事件。如何手动触发此事件进行测试?
【问题讨论】:
标签: web-push progressive-web-apps
当用户删除并重新授予推送权限时也会触发该事件(请参阅https://github.com/w3c/push-api/issues/116)。
例如,在 Firefox 中,您可以单击站点标识图标,在“权限”部分中,为“接收通知”选择“阻止”,然后选择“允许”。
将触发pushsubscriptionchange 事件。
【讨论】:
registration.pushManager.subscribe(),然后再次允许该权限。
很遗憾,无法对此功能进行任何端到端测试。你能做的最好的就是通过服务工作者的 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"));
});
}
【讨论】:
event.oldSubscription 和event.newSubscription。在浏览器开发工具中有一个按钮来触发真正的pushsubscriptionchange 会很有用:请参阅此feature proposal in the Chromium bug tracker
Failed to execute 'waitUntil' on 'ExtendableEvent': Can not call waitUntil on a script constructed ExtendableEvent.