Web Push переподписываю push manager chrome - PullRequest
0 голосов
/ 03 марта 2019

В настоящее время у меня есть 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);
    });

Но я хочу изменить подписку с помощью регистраций ключей vapid, как это,

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);
    });

Теперь нашбраузеры уже имеют подписку, как показано ниже, и я получаю сообщение об ошибке «вы уже подписаны», когда я запускаю нижний блок кода (с vapid-ключами).

Метод Subscription.unsubscribe () не работает в браузерах Chrome.Как я могу повторно подписаться на pushManager?

1 Ответ

0 голосов
/ 03 марта 2019

Я нахожу ответ, попробовав много разных вещей.Я пытался отменить подписку на консоли Chrome, и я получил «ошибка DOM», но не успех.Затем я добавил приведенный ниже код в функцию обратного вызова swr.pushManager.getSubscription ().Я могу отписаться от push-менеджера.

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