pushsubscriptionchange
イベントが発生すると、デベロッパーはプッシュのユーザー登録を再び行えます。この方法の難点の一つは、ユーザーを再登録するために、デベロッパーがウェブページの JavaScript とサービス ワーカーの間で applicationServerKey
(および他の subscribe()
オプション)を同期させなければならないことです。
Chrome 54 以降では、サブスクリプション オブジェクトの options パラメータ(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
}));
});
小さな変更ですが、今後非常に役立ちます。