Сообщения регистрируются как успешно отправленные, но всплывающие уведомления не появляются.
С помощью onMessage иногда можно зарегистрировать сообщение.
Запрос токена FCM работает только на локальном хосте.
При попытке на сайте .com сообщение об ошибке зависит от того, использую ли я компьютер или компьютер Chromebook - сгенерированные сообщения об ошибках отличаются.
Я использовал 2 разных устройства, но всегда браузер Chrome. Облачная функция записывает сообщение и ответ FCM в журнал функций, поэтому подтверждает успешность отправки.
Когда я удалил onMessage с веб-страницы получателя, никаких уведомлений не было.
Веб-страница открыта во время этих испытаний. Это web / javascript.
Разрешение на уведомление установлено на обоих устройствах.
Я потратил часы на поиск в сети, пытаясь найти какой-либо намек на то, что попробовать.
firebase-сообщений-sw.js
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');
firebase.initializeApp({
'messagingSenderId': '593287500713'
});
const messaging = firebase.messaging();
соответствующий код, который работает с веб-страницей
messaging.onMessage(function (payload) {
console.log('Message received. ', payload);
});
Я предполагаю, что без onMessage уведомления должны появляться на основе Firebase SDK, но они не появляются. НЕПРАВИЛЬНОЕ ПОЛОЖЕНИЕ
В фоновом режиме ничего не появляется. (Я думаю, что уведомления должны появляться автоматически.)
Я могу запросить и получить токен FCM при работе на локальном хосте, но тот же код выдает ошибку при развертывании. «Запрос отсутствует, требуется аутентификация ...»
Я связывался со службой поддержки @ Google, которая заверила меня, что это предложение, а затем еще одно решение на 100% решит проблему. Ничто не имело значения.
Я пробовал фрагменты кода в документации Firebase, а также примеры на github.
Если бы я мог найти существующий код, который работал бы, это было бы хорошим началом, потому что я думаю, что найти решение после 40 часов усилий - это безнадежно.
Я что-то упустил очевидное?
ОБНОВЛЕНИЕ ....
Я нашел две причины не видеть уведомления.
1) У моего ПК была настройка, которая, кажется, частично подавляла дисплей. Неожиданно, потому что уведомления YouTube отображаются. (Откройте панель уведомлений в правом нижнем углу экрана. «Помощь при фокусировке» с символом полумесяца. Если щелкнуть, он говорит «вкл» или «только сигналы тревоги», я думаю, что это ограничивает то, что видно.)
2) Мое предположение, основанное на документации и видео Firebase, заключалось в том, что onMessage () должен предотвращать уведомления, когда пользователь находится на веб-странице, и позволять разработчику игнорировать или обрабатывать уведомления на странице. Половина справа. Видимо, уведомления по умолчанию игнорируются. UNLESS onMessage () что-то с ними делает. Документы содержат фрагменты кода для onMessage (), но только для входа в консоль.
Также обнаружил забавную проблему. Теперь, когда мой компьютер зарегистрировал получателя сообщений, он получает их, даже если этот получатель вышел из системы и выполнил вход на другом устройстве. Это звучит как проблема.
Текущая рабочая версия кода. Это происходит в веб-странице / приложении (НЕ в файле messaging-sw.js