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
}));
});
これは小さな変更で、今後非常に役立つでしょう。