Варианты PushSubscription

Когда происходит событие pushsubscriptionchange , у разработчика есть возможность повторно подписаться на push-уведомление пользователя. Одна из проблем заключается в том, что для повторной подписки пользователя разработчик должен синхронизировать applicationServerKey (и любые другие параметры subscribe() ) между JavaScript веб-страницы и их сервис-воркером.

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

Это небольшое изменение, которое будет очень полезно в будущем.