PushSubscription의 옵션

pushsubscriptionchange 이벤트가 발생하면 개발자가 푸시를 위해 사용자를 다시 구독할 수 있습니다. 이의 한 가지 문제점은 사용자를 다시 구독하려면 개발자가 웹페이지의 JavaScript와 서비스 워커 간에 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  
    }));  
});

작은 변경사항이지만 향후 매우 유용하게 사용될 것입니다.