FCM Этот сайт был обновлен в фоновом режиме - PullRequest
0 голосов
/ 14 февраля 2019

Поэтому я использую VueJS с включенной опцией PWA.При использовании Firebase Cloud Messaging (для веб-приложения), я получаю уведомление: This site has been updated in the background, но только когда вкладка не сфокусирована или не открыта.Если вкладка активна, я ничего не получаю в консоли.Я сейчас использую Почтальон для отправки уведомлений, и он возвращает успех

{
    "multicast_id": 5364665067527599460,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:1550148053476716%2fd9afcdf9fd7ecd"
        }
    ]
}

Вот мой main.js

const config = {
    apiKey: "API_KEY",
    authDomain: "AUTH_DOMAIN",
    databaseURL: "DATABASE_URL",
    projectId: "PROJECT_ID",
    storageBucket: "STORAGE_BUCKET",
    messagingSenderId: "SENDER_ID"
};
firebase.initializeApp(config);

const messaging = firebase.messaging();
messaging.usePublicVapidKey("PUBLIC_VAPID_KEY");
navigator.serviceWorker.register('./firebase-messaging-sw.js')
  .then((registration) => {
    console.log("Now using registration: " + registration);
    messaging.useServiceWorker(registration);

  }).catch(err => {
    console.log("Error in registration");
    console.log(err)
  });

Мой firebase-messaging-sw.js (я никогда не видел консольный журналвот внутри setBackgroundMessageHandler)

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

var config = {
  messagingSenderId: 'SENDER_ID'
};
firebase.initializeApp(config);

let messaging = firebase.messaging();

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

  return self.registration.showNotification('title', {body: 'message'});
});

И в моем App.vue (также я никогда не видел консольный журнал onMessage)

created() {
    this.$messaging.onMessage(function(payload) {
        console.log('Message received: ', payload);
        // ...
      });
},
methods: {
    sendNotif() {
        this.$messaging.requestPermission().then(() => this.$messaging.getToken())
        .then((token) => {
            console.log(token) // Receiver Token to use in the notification
        })
        .catch(function(err) {
            console.log("Unable to get permission to notify.", err);
        });
    },
},

Я могу получить доступ к токену,ни одна из моих настроек не верна, иначе запрос почтальона не даст успеха.Я проверил несколько других вопросов, связанных с этим, но пока безуспешно ...

...