هنگامی که یک رویداد pushsubscriptionchange
رخ میدهد، این فرصتی برای یک توسعهدهنده است تا کاربر را مجدداً برای push مشترک کند. یکی از نکات دردناک این است که برای اشتراک مجدد یک کاربر، توسعهدهنده باید applicationServerKey
(و سایر گزینههای subscribe()
) را بین جاوا اسکریپت صفحه وب و سرویسدهنده خود همگام نگه دارد.
در Chrome 54 و نسخههای جدیدتر، اکنون میتوانید از طریق پارامتر گزینهها در یک شیء اشتراک، به نام 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
}));
});
این یک تغییر کوچک است که در آینده بسیار مفید خواهد بود.