如果我的推送注册失败,我正在尝试采取特定措施。为了使订阅失败,我删除<link>
了manifest.json
文件(我使用的是 Chrome)。我按预期收到以下错误:
Uncaught (in promise) DOMException: Registration failed - manifest empty or missing
但是,此错误来自订阅代码所在的index.html:1
而不是:main.js
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
块没有触发。这是正确的行为还是我可能做错了什么?
更多详细信息:我正在尝试模拟离线行为,这就是我删除链接的原因manifest.json
(除非缓存,否则离线将不可用)。如果订阅因应用程序脱机而失败,我想采取行动catch
(例如排队分析命中或更新 UI)。