Web Push重新订阅推送管理器Chrome

时间:2019-03-03 13:06:27

标签: 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);
    });

但是我想用这样的简单密钥注册来更改订阅,

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?

1 个答案:

答案 0 :(得分:1)

尝试了许多不同的东西后,我找到了答案。我在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);
})