Получать только последнее отправленное сообщение (Firebase Cloud Messaging) - PullRequest
1 голос
/ 31 октября 2019

Я пытался отправить несколько сообщений в тему из облачной функции Firebase с помощью Firebase Admin SDK. Но если устройство не подключено к сети, я включаю сетевое подключение и получаю только последнее сообщение, отправленное с помощью метода onMessageReceived(), в моем приложении для Android. Я хочу получить все сообщения, которые были отправлены, когда устройство не было подключено к Интернету.

Код функции моего облака:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.showNotification = functions.https.onCall((data,context) => {

  var topic = 'weather';

  var message = {
    data: {
      title: 'This is title',
      description: getRandomString(15)
    },
    topic: topic,
    android : {
        ttl : 86400
    }
  };

  // Send a message to devices subscribed to the provided topic.
  admin.messaging().send(message)
    .then((response) => {
      // Response is a message ID string.
      console.log('Successfully sent message:', response);
      return response;
    })
    .catch((error) => {
      console.log('Error sending message:', error);
    });

});

1 Ответ

1 голос
/ 31 октября 2019

Вызываемые функции должны возвращать обещание из верхнего уровня обратного вызова функции, которое разрешает данные для отправки клиенту. Прямо сейчас ваша функция ничего не возвращает, что означает, что она немедленно завершается и ничего не возвращает. Код return response на самом деле просто возвращает значение из функции обратного вызова then, а не функции верхнего уровня. Вместо этого попробуйте это, что должно распространить это значение из функции в клиент.

  return admin.messaging().send(message)
    .then((response) => {
      // Response is a message ID string.
      console.log('Successfully sent message:', response);
      return response;
    })
    .catch((error) => {
      console.log('Error sending message:', error);
    });

Очень важно правильно обращаться с обещаниями в коде функций, иначе они могут вообще не работать.

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