Когда происходит событие 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
}));
});
Это небольшое изменение, которое будет очень полезно в будущем.