2016-04-13 107 views

回答

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")); 
    }); 
} 
2

事件當用戶刪除並重新授予推權限(請參見https://github.com/w3c/push-api/issues/116)也被觸發。例如,在Firefox中,您可以單擊站點身份圖標,在「權限」部分中,選擇「阻止」作爲「接收通知」,然後選擇「允許」。

A pushsubscriptionchange事件將被觸發。

pushsubscriptionchange event

+0

嘗試這樣的事件沒有觸發...我也看到https://github.com/w3c/push-api/issues/116開放 –

+0

它用來工作,因爲你可以從我的截圖中查看。從那以後我不知道它是否停止了工作。您也可以嘗試從允許在「首選項」 - >「內容」中發送通知的網站列表中刪除該網站。 – Marco

+0

[最新評論](https://github.com/w3c/push-api/issues/116#issuecomment-280743159)在這個問題上說_it現在定義了用戶代理可以在權限被撤銷時觸發pushsubscriptionchange事件_ –