веб-служба облачных сообщений Firebase не получает тестовые сообщения - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь получить базовое подтверждение концепции с облачными сообщениями Firebase и испытываю боль при получении сообщений, при отправке сообщений ничего не происходит, даже если приложение находится на переднем плане, событие onMessage ничего не возвращает, несмотря на то, что я неПри отправке сообщения об ошибке все в порядке с консоли почтальона или fcm.

Я также заметил, что chrome: // gcm-internals / показывает состояние "ПОДКЛЮЧЕНИЕ"

вот мойapp.js, но для меня это больше связано с состоянием gcm, который должен отображать «CONNECTED»

var firebase = require("firebase/app");
require('firebase/messaging');

// Your web app's Firebase configuration
var firebaseConfig = {
    apiKey: "AIzaSyCbrs6uvQQ5s6kAp6YfvDzsds_CfMt3-hA",
    authDomain: "test-flarum-fcm.firebaseapp.com",
    databaseURL: "https://test-flarum-fcm.firebaseio.com",
    projectId: "test-flarum-fcm",
    storageBucket: "",
    messagingSenderId: "977636469573",
    appId: "1:977636469573:web:76e2e191f02f8923df6c2c"
};
// Initialize Firebase
var app = firebase.initializeApp(firebaseConfig);

// Retrieve Firebase Messaging object.
var messaging = firebase.messaging();
//console.log(messaging);

console.log('myToken : '+getToken());

Notification.requestPermission().then((permission) => {

    if (permission === 'granted') {
        console.log('Notification permission granted.');

        //getMyToken();
        if(isTokenSentToServer()){
            console.log("token already saved")

        }else{
            // TODO(developer): Retrieve an Instance ID token for use with FCM.
            getMyToken();
        }

    } else {
        console.log('Unable to get permission to notify.');
        setTokenSentToServer(false);
    }
});

// Get Instance ID token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
function getMyToken() {
    messaging.getToken().then((currentToken) => {
        if (currentToken) {
            console.log(currentToken);
            //sendTokenToServer(currentToken);//@todo
            //updateUIForPushEnabled(currentToken);
            saveToken(currentToken);
            setTokenSentToServer(true);
        } else {
            // Show permission request.
            console.log('No Instance ID token available. Request permission to generate one.');
            // Show permission UI.
            //updateUIForPushPermissionRequired();//@todo
            //setTokenSentToServer(false); //@todo
            setTokenSentToServer(false);
        }
    }).catch((err) => {
        console.log('An error occurred while retrieving token. ', err);
        //showToken('Error retrieving Instance ID token. ', err);
        setTokenSentToServer(false);
    });
}

// Callback fired if Instance ID token is updated.
messaging.onTokenRefresh(() => {
    messaging.getToken().then((refreshedToken) => {
      console.log('Token refreshed.');
      // Indicate that the new Instance ID token has not yet been sent to the
      // app server.
      setTokenSentToServer(false);
      // Send Instance ID token to app server.
      //sendTokenToServer(refreshedToken);
      // ...
    }).catch((err) => {
      console.log('Unable to retrieve refreshed token ', err);
      //showToken('Unable to retrieve refreshed token ', err);
    });
  });

function setTokenSentToServer(sent) {
    window.localStorage.setItem('sentTokenToServer', sent ? 1 : 0);
}

function isTokenSentToServer(){
    return window.localStorage.getItem('sentTokenToServer') == 1;
}
function saveToken(token){
   myToken = token;
   window.localStorage.setItem('myToken', token);
}

function getToken(){
    return window.localStorage.getItem('myToken');
}

messaging.onMessage((payload) => {
    console.log('Message received. ', payload);
    // ...
});

Спасибо за вашу помощь

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

{
    "multicast_id": 7270949329343339591,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        {
            "message_id": "0:1569712574121124%e609af1cf9fd7ecd"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...