PushSubscription のオプション

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

これは小さな変更で、今後非常に役立つでしょう。