Quando um evento pushsubscriptionchange
ocorre, é uma oportunidade para que um desenvolvedor
reative a inscrição do usuário para push. Um dos problemas é que, para
reinscrever um usuário, o desenvolvedor precisa manter o applicationServerKey
(e outras
opções de subscribe()
) sincronizado entre o JavaScript da página da Web e o
service worker.
No Chrome 54 e versões mais recentes, agora é possível acessar as opções pelo parâmetro "options" em um objeto de assinatura, conhecido como PushSubscriptionOptions.
Você pode copiar e colar o snippet de código abaixo em
simple-push-demo para conferir
as opções. O código simplesmente recebe a assinatura atual e imprime
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);
});
Com essas informações, é possível reativar a inscrição de um usuário no evento pushsubscriptionchange da seguinte maneira:
self.addEventListener('pushsubscriptionchange', e => {
e.waitUntil(registration.pushManager.subscribe(e.oldSubscription.options)
.then(subscription => {
// TODO: Send new subscription to application server
}));
});
É uma pequena mudança, mas que será muito útil no futuro.