Opções de um PushSubscription

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.