Что должно произойти:
- Пользователь нажимает кнопку отправить напоминания html,
- браузер запрашивает разрешения на уведомления,
- пользователь нажимает разрешить,
- пользователь получает значение current_token.
Что на самом деле происходит: - Пользователь нажимает отправить напоминания > кнопка html,
- браузер запрашивает разрешения на уведомления,
- пользователь нажимает кнопку разрешить,
- пользователь не получает значение current_token,
- пользователь должен снова нажать кнопку отправить напоминания html,
на этот раз пользователь получает значение current_token (конечно, без необходимости нажимать разрешить, поскольку разрешения были предоставлены ранее).
Вот мой текущий код:
html
Код: Выделить всё
send reminders
Код: Выделить всё
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/firebase-messaging-sw.js', {
scope: '/'
}).then(function(registration) {
console.log('fcm: service worker registered successfully');
}).catch(function(error) {
console.error('fcm: service worker registration failed:', error);
});
navigator.serviceWorker.ready.then(function(registration) {
console.log('fcm: service worker is ready');
window.onload = function() {
console.log('fcm: service worker is ready and page is fully loaded');
if (navigator.serviceWorker.controller) {
console.log('fcm: service worker active and controlling page');
sw_ready();
} else {
console.log('fcm: service worker ready but not yet controlling page');
registration.addEventListener('controllerchange', function () {
console.log('fcm: service worker active and controlling page');
sw_ready();
});
}
};
});
}
// default sw ready
let sw_ready = function () {
$('#remind_me').click(function(e) {
// request permission for firebase cloud messaging
console.log('fcm: attemping to get token');
messaging.getToken({
vapidKey: config.firebase.messaging // this is a valid vapidKey
}).then(function(current_token) {
// THIS PART OF THE CODE IS ONLY REACHED
// THE 2ND TIME #remind_me IS CLICKED ON
// check token
if (current_token) {
console.log('fcm: token accquired', current_token);
} else {
// request denied
console.log('fcm: user denied permission for notications');
}
}).catch(function(error) {
// error while retrieving token
});
});
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -messaging