Фоновое сообщение Firebase Web Push никогда не отображается - PullRequest
0 голосов
/ 03 декабря 2018

Я использую push-уведомления Firebase в нашем веб-приложении.

Сообщение, отправленное с FCM, никогда не отображается, когда приложение не активно или не открыто.Ошибки не генерируются.

Код переднего плана:

<script src="https://www.gstatic.com/firebasejs/5.6.0/firebase.js"></script>
    <script>
        MsgElem = document.getElementById("msg")
        TokenElem = document.getElementById("token")
        NotisElem = document.getElementById("notis")
        ErrElem = document.getElementById("err")
        // Initialize Firebase
        // TODO: Replace with your project's customized code snippet
        var config = {
            apiKey: "<apikey>",
            authDomain: "<app>.firebaseapp.com",
            databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
            storageBucket: "<app>.appspot.com",
            messagingSenderId: "<id>",
        };
        firebase.initializeApp(config);

        const messaging = firebase.messaging();
        messaging
            .requestPermission()
            .then(function () {
                MsgElem.innerHTML = "Notification permission granted." 
                console.log("Notification permission granted.");

                // get the token in the form of promise
                return messaging.getToken()
            })
            .then(function(token) {
                TokenElem.innerHTML = "token is : " + token
            })
            .catch(function (err) {
                ErrElem.innerHTML =  ErrElem.innerHTML + "; " + err
                console.log("Unable to get permission to notify.", err);
            });

        messaging.onMessage(function(payload) {
            console.log("Message received. ", payload);
            NotisElem.innerHTML = NotisElem.innerHTML + JSON.stringify(payload) 
        });
    </script>

firebase-messaging-sw.js

    importScripts ('https://www.gstatic.com/firebasejs/5.6.0/firebase-app.js');

    importScripts ('https://www.gstatic.com/firebasejs/5.6.0/firebase-messaging.js');

    firebase.initializeApp ({'messagingSenderId': 'id'});

    const messaging = firebase.messaging();

    messaging.setBackgroundMessageHandler (function(payload) {

    console.log('[firebase-messaging-sw.js] Received background message ', payload);

     const data = payload.data;
     const notificationTitle = data.title;
     const notificationOptions = {
body: data.body
     };

      return self.registration.showNotification (notificationTitle,  notificationOptions);
    });

Запрос FCM:

 {
      "to":"ids",
      "data":{
      "body":"clicktoaction",
      "title":"Simplext Notification"
      }
    }

Событие messaging.onMessage (функция (полезная нагрузка) всегда вызывается независимо от того, находится приложение на переднем или заднем плане.

Я попытался изменить запрос FCM с «данных» на «уведомление».то же самое.

Я использую Chrome v 70.

1 Ответ

0 голосов
/ 04 декабря 2018

Я наконец-то обнаружил, что клиентское приложение firebase должно быть под https, чтобы работала сервисная программа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...