Запрос токена разрешения на уведомление с помощью Firebase Cloud MessagingJquery

Программирование на jquery
Ответить
Anonymous
 Запрос токена разрешения на уведомление с помощью Firebase Cloud Messaging

Сообщение Anonymous »

Я пытаюсь запросить токен разрешения на уведомление с помощью Firebase Cloud Messaging с JavaScript. Мой текущий код работает, но, как поясняется в комментарии к коду, шаги ведут себя странно.
Что должно произойти:
  • Пользователь нажимает кнопку отправить напоминания html,
  • браузер запрашивает разрешения на уведомления,
  • пользователь нажимает разрешить,
  • пользователь получает значение current_token.

    Что на самом деле происходит:
  • Пользователь нажимает отправить напоминания > кнопка html,
  • браузер запрашивает разрешения на уведомления,
  • пользователь нажимает кнопку разрешить,
  • пользователь не получает значение current_token,
  • пользователь должен снова нажать кнопку отправить напоминания html,
    на этот раз пользователь получает значение current_token (конечно, без необходимости нажимать разрешить, поскольку разрешения были предоставлены ранее).
Насколько я понимаю, при выполнении message.getToken код внутри then(function(current_token) доступен только в том случае, если пользователь ранее предоставил разрешения на уведомления, но это должно произойти одним действием.
Вот мой текущий код:
html

Код: Выделить всё

send reminders


Javascript

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»