Проблема с методом.subscribe() для pushManager
Я следую этому очень ясному уроку.
Все работает, за исключением того, что когда я добираюсь до стадии подписки пользователя с pushManager, когда я звоню pushManager.subscribe()
Я не получаю никакого ответа от обещания, чей статус pending
,
Возможно, мне не хватает какой-то явной проблемы с моей настройкой, которая заключается в следующем:
if ('serviceWorker' in navigator && 'PushManager' in window) {
console.log('Service Worker and Push is supported');
navigator.serviceWorker.register('service-worker.js')
.then(function(swReg) {
console.log('Service worker successfully registered.');
navigator.serviceWorker.ready.then(function() {
const subscribeOptions = {
userVisibleOnly: true,
applicationServerKey: ... // My application server key.
};
let promise = swReg.pushManager.subscribe(subscribeOptions)
console.log(promise) // Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
promise
.then(function(pushSubscription) {
console.log('Received PushSubscription: ', pushSubscription); // Never gets called.
})
.catch(function(err) {
console.error('Unable to subscribe.', err); // Never gets called.
});
})
})
.catch(function(err) {
console.error('Unable to register service worker.', err);
});
}
Нужно ли делать дополнительную настройку где-нибудь еще? Любой совет приветствуется.
1 ответ
Просто наткнулся на эту ветку.
Совет должен удалить GCM Store
каталог, расположенный в:
/Users/[user-name]/Library/Application Support/Google/Chrome/Default/GCM Store
Сначала мне пришлось выйти из Chrome, удалить папку, а затем перезапустить, чтобы она заработала.
Похоже на ошибку, которая прослеживается до июня 2016 года (Chrome 51), и хотя сейчас октябрь 2017 года (Chrome 61), проблема все еще остается.
Надеюсь, это может кому-нибудь помочь.