Gdy wystąpi zdarzenie pushsubscriptionchange
, deweloper ma okazję do ponownego zasubskrybowania użytkownika na potrzeby push. Jednym z problemów jest to, że aby ponownie zasubskrybować użytkownika, deweloper musi utrzymywać synchronizację parametru applicationServerKey
(i innych opcji subscribe()
) między kodem JavaScript strony internetowej a skryptą service worker.
W Chrome 54 i nowszych wersjach możesz teraz uzyskać dostęp do opcji za pomocą parametru „options” w obiekcie subskrypcji o nazwie PushSubscriptionOptions.
Możesz skopiować i wkleić ten fragment kodu do simple-push-demo, aby zobaczyć, jak wyglądają dostępne opcje. Kod po prostu pobierze aktualną subskrypcję i wydrukuje 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);
});
Podając tę krótką informację, możesz ponownie zasubskrybować użytkownika w zdarzeniu pushsubscriptionchange:
self.addEventListener('pushsubscriptionchange', e => {
e.waitUntil(registration.pushManager.subscribe(e.oldSubscription.options)
.then(subscription => {
// TODO: Send new subscription to application server
}));
});
To niewielka zmiana, która z pewnością przyda się w przyszłości.