javascript - Web Push 重新订阅 push manager chrome

标签 javascript google-chrome push subscription web-push

目前我有很多 chrome 浏览器的推送订阅都是这样的方法,

swr.pushManager.subscribe({userVisibleOnly: true})
    .then(function (subscription) {
        if (subscription) {
            console.log("success::" + JSON.stringify(resp.subscription));
        }
        return resolve(resp);
    })
    .catch(function (err) {
        resp.status = 'subs_error';
        resp.error = '' + err;
        logger.error("Can not re-subscribe for pushes", err);
        return resolve(resp);
    });

但我想用这样乏味的 key 注册来更改订阅,

swr.pushManager.subscribe({userVisibleOnly: true, applicationServerKey: base64UrlToUint8Array(<publicApplicationKey>)})
    .then(function (subscription) {
        if (subscription) {
            console.log("success::" + JSON.stringify(resp.subscription));
        }
        return resolve(resp);
    })
    .catch(function (err) {
        resp.status = 'subs_error';
        resp.error = '' + err;
        logger.error("Can not re-subscribe for pushes", err);
        return resolve(resp);
    });

现在我们的浏览器已经像下面这样订阅了,当我运行底部代码块(使用乏味的键)时,我收到错误“你已经订阅了”。

Subscription.unsubscribe() 方法不适用于 Chrome 浏览器。我怎样才能重新订阅 pushManager ?

最佳答案

我在尝试了许多不同的事情后找到了答案。我在 chrome 控制台上尝试取消订阅方法,但出现“DOM 错误”,但没有成功。然后我将以下代码添加到 swr.pushManager.getSubscription() 成功回调中。我可以取消订阅推送管理器。

subscription.unsubscribe().then(function(successful) {
// You've successfully unsubscribed
   console.log("unsubscribe:" + successful);
}).catch(function(e) {
// Unsubscription failed
   console.logI("unsubscribe:err:" + e);
})

关于javascript - Web Push 重新订阅 push manager chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969121/

相关文章:

javascript - 'prototype' 属性在 `function` 类型对象设计中的作用?

Javascript 刽子手游戏

javascript - 使用 IFrame 进行响应式设计测试面临 IE7 和 IE8 的问题

javascript - 如何在新的 Chrome 窗口中从 AJAX 响应打开 PDF blob

javascript - Chrome 定义检查的奇怪行为 : ReferenceError: x is not defined

mercurial - 乌龟 Mercurial : how to get notified whe something pushed to a central repo

git - 将单个文件从克隆的仓库推送到 fork 的仓库

javascript - 在输入字段模糊时隐藏 Nativescript 中的 Android 键盘

html - 为什么在使用 CSS counter() 函数时,除了最后一个之外,Chrome 中的伪元素是可选的?

xamarin.ios - ServiceStack 能否用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流媒体)