כשאירוע pushsubscriptionchange
מתרחש, זו הזדמנות למפתח להירשם מחדש למשתמש לקבלת התראות. אחד מנקודות החולשה של השיטה הזו היא שכדי לחדש את המינוי של משתמש, המפתח צריך לשמור על סנכרון של applicationServerKey
(וכל אפשרות אחרת של subscribe()
) בין ה-JavaScript של דף האינטרנט לבין ה-service worker שלו.
ב-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
}));
});
זהו שינוי קטן שיהיה מאוד שימושי בעתיד.