Обмен сообщениями с Firebase, сообщение не получено

#firebase #firebase-cloud-messaging

#firebase #firebase-облако-обмен сообщениями

Вопрос:

Моя облачная функция заявляет, что она успешно отправила сообщение undefined messages were sent successfully , но я его не получаю:

 const functions = require("firebase-functions");
const admin = require("firebase-admin");

var serviceAccount = require("./config.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://pushmessage-bd1eb.firebaseio.com"
});

const messaging = admin.messaging();
const message = {
            data: { title: "Testing", body: "Test" },
            token:
                "fm8hZocb9X0:APA91bGANY8U1k7iXSAofh8PEtyA3SfkAvyvicjHbSzDC7s1DwzhCxBBhj5oeAhiZpNLFC1wUHOPX_C0vlGtUMv882EXxBjsM4qeBpFndka8kzir9kgmJnuPTRImx2cxUT53oXzJuAzB"
        };

        messaging.send(message).then(response => {
            console.log(
                response.successCount   " messages were sent successfully"
            );
        });
  

Если я использую тот же токен на панели управления firebase для отправки сообщения, сообщение отправляется успешно.

Как я могу заставить свою облачную функцию отправлять сообщение?

config.json:

 {
  "type": "service_account",
  "project_id": "pushmessage-bd1eb",
  "private_key_id": "xxx",
  "private_key": "-----BEGIN PRIVATE KEY-----nxxx-----END PRIVATE KEY-----n",
  "client_email": "firebase-adminsdk-8dd2o@pushmessage-bd1eb.iam.gserviceaccount.com",
  "client_id": "xxx",
  "senderID": "388436954224",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-8dd2o@pushmessage-bd1eb.iam.gserviceaccount.com"
}
  

Ответ №1:

Используете ли вы admin.messaging().send()?

См.:

Пожалуйста, попробуйте следующий код.

Изменить data на notification .

И возвращаемая строка admin.messaging().send().

       const message = {
        notification: { title: "Testing", body: "Test" },
        token:
            "The registration token here"
      };

      admin.messaging().send(message).then(response => {
        console.log(
            response   " messages were sent successfully"
        );
      });
  

Или вы можете использовать admin.messaging().sendToDevice() .

См.:

Пожалуйста, попробуйте следующий код.

       const token= "The registration token here";
      const payload = {
        notification: { title: "Testing", body: "Test" }
      };

      admin.messaging().sendToDevice(token, payload).then(response => {
        console.log(
            response.successCount   " messages were sent successfully"
        );
      });
  

Комментарии:

1. Да, я использую admin.messaging, я получаю сообщение об ошибке UnhandledPromiseRejectionWarning: отклонение необработанного обещания (идентификатор отклонения: 1): Ошибка: запрошенный объект не найден.