푸시 등록이 실패한 경우 특정 작업을 수행하려고합니다. 구독을 실패하게하려면 <link>
을 (Chrome을 사용하고 있습니다) manifest.json
파일로 삭제했습니다. 나는 다음과 같은 오류가 발생할 수 얻을 같이푸시 구독 오류 캐치가 발생하지 않습니다.
function subscribe() {
navigator.serviceWorker.ready
.then(function(reg) {
reg.pushManager.getSubscription()
.then(function(sub) {
if (!sub) {
reg.pushManager.subscribe({userVisibleOnly: true})
.then(function(subscription) {
console.log('Subscribed to push,', subscription);
});
} else {
console.log('Already subscribed');
}
});
})
.catch(function(e) {
console.log('catch!');
// Do something
});
}
을 그리고 catch
블록이다 (I 결과로 의심) :
Uncaught (in promise) DOMException: Registration failed - manifest empty or missing
그러나이 오류가 가입 코드가 살고보다는 main.js
index.html:1
에서 온다 방아쇠를 당기지 말라. 이게 올바른 행동입니까 아니면 뭔가 잘못하고있는 것입니까?
자세한 내용 : 은 내가 (캐시하지 않는 한 사용할 수없는 오프라인 것) manifest.json
에 대한 링크를 삭제 한 이유는 오프라인 동작을 시뮬레이션하기 위해 노력하고 있습니다. 앱이 오프라인이어서 구독이 실패한 경우 catch
에서 조치를 취하고 싶습니다 (예 : 애널리틱스 조회 또는 UI 업데이트 대기).
를 제외하고 (의견과 같이 다른 비동기 "수준"을 위해, 나는 또한, 이에 상응하는 약속을 위해 어획량을 추가해야한다고
참고. catch가 reg.pushManager.getSubscription()에 대해 처리되어야하고 then(). catch()가 구독을 확인하지 못했습니다. – vbharath
아! 물론입니다. 나는 이것을 모른 채 약속을 사용하여 멀리까지 얻은 방법을 모르겠습니다. 고마워요 !! FYI처럼 실제로는'reg.pushManager.subscribe ({userVisibleOnly : true}) '가 던져 버리기 때문에'catch'가 있어야합니다. 그 수준에서. –