Quando si verifica un evento pushsubscriptionchange
, uno sviluppatore offre l'opportunità
di iscrivere di nuovo l'utente per il push. Uno dei punti dolenti di questo processo è che, per
iscrivere di nuovo un utente, lo sviluppatore deve mantenere applicationServerKey
(e qualsiasi altra opzione subscribe()
) sincronizzati tra il codice JavaScript della pagina web e il
service worker.
In Chrome 54 e versioni successive, ora puoi accedere alle opzioni tramite il parametro opzioni in un oggetto abbonamento, chiamato PushSubscriptionOptions.
Puoi copiare e incollare il seguente snippet di codice in
simple-push-demo per vedere l'aspetto delle opzioni. Il codice recupera l'abbonamento attuale e stampa
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);
});
Con questa piccola informazione puoi iscrivere di nuovo un utente all'evento pushsubscriptionchange in questo modo:
self.addEventListener('pushsubscriptionchange', e => {
e.waitUntil(registration.pushManager.subscribe(e.oldSubscription.options)
.then(subscription => {
// TODO: Send new subscription to application server
}));
});
Si tratta di una piccola modifica che sarà estremamente utile in futuro.