當發生 pushsubscriptionchange
事件時,開發人員可以重新訂閱使用者以進行推送。其中一個問題點之一,就是重新訂閱使用者,開發人員必須讓網頁 JavaScript 及其 Service Worker 之間的 applicationServerKey
(和其他 subscribe()
選項) 保持同步。
在 Chrome 54 以上版本中,您現在可以透過訂閱物件中的選項參數 (稱為 PushSubscriptionOptions) 來存取選項。
您可以將下列程式碼片段複製並貼到 simple-push-demo 中,查看選項的呈現方式。程式碼只會取得目前的訂閱項目,並輸出 subscription.options
。
=======
navigator.serviceWorker.ready.then(registration => {
return registration.pushManager.getSubscription();
})
.then(subscription => {
if (!subscription) {
console.log('No subscription 😞');
return;
}
console.log('Here are the options 🎉');
console.log(subscription.options);
});
有了這一小段資訊,您就可以在 pushsubscriptionchange 事件中重新訂閱使用者,如下所示:
self.addEventListener('pushsubscriptionchange', e => {
e.waitUntil(registration.pushManager.subscribe(e.oldSubscription.options)
.then(subscription => {
// TODO: Send new subscription to application server
}));
});
這個小幅變動,對日後非常實用。