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

Web Push re-subscribe push manager chrome

目前我有许多 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);
    });

现在我们的浏览器已经像下面这样订阅了,当我 运行 底部代码块(带有乏味的键)时,我收到错误 "you are already subscribed"。

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

我在尝试了许多不同的事情后找到了答案。我在 chrome 控制台上尝试取消订阅方法,但我得到了 "DOM error",但没有成功。然后我将下面的代码添加到 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);
})