Сложности отправки уведомления с облачной функцией Firebase? - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу создать облачную функцию, которая будет отправлять уведомления всем пользователям приложения для iOS.В качестве первого теста я хочу отправить уведомление только одному пользователю.

Ниже приведен соответствующий код.Когда я запускаю его, в браузере появляется следующее:

Error: could not handle the request

Может кто-нибудь увидеть, где я делаю это неправильно?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp({
  credential: admin.credential.cert({
    projectId: 'myAppID',
    clientEmail: 'firebase-adminsdk-gotiq@edo-press-japan.iam.gserviceaccount.com',
    privateKey: '-----BEGIN PRIVATE KEY-----\n........=\n-----END PRIVATE KEY-----\n'
  }),
  databaseURL: 'https://myApp.firebaseio.com'
});

let registrationToken = "112233..aabbcc...7788";
exports.sendNotification = functions.https.onRequest((req, res) => {
    var payload = {
        data:{
          title: "ELR",
          body: "The world has been messed up."
        },
        token: registrationToken
    };

    admin.messaging().send(payload)
    .then((response) => {
        console.log("Successfully sent message: ", response);
        response.send("Hello from Firebase! - ALL IS GOOD !!");
        //return true;
    })
    .catch((error) => {
        console.log("Error sending message: ", error);
        response.send("Hello from Firebase! - FAILED !!");
        //return false;
    })
})

1 Ответ

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

В вашем коде есть опечатки в именах переменных: с одной стороны вы используете res, а с другой - response.Вы должны изменить его следующим образом:

exports.sendNotification = functions.https.onRequest((req, res) => {
    var payload = {
        data:{
          title: "ELR",
          body: "The world has been messed up."
        },
        token: registrationToken
    };

    admin.messaging().send(payload)
    .then((response) => {
        console.log("Successfully sent message: ", response);
        res.send("Hello from Firebase! - ALL IS GOOD !!");  // <-- here use res and not response
    })
    .catch((error) => {
        console.log("Error sending message: ", error);
        res.status(500).send("Hello from Firebase! - FAILED !!"); // <-- here, use res and add status(500)
    })
})

Также обратите внимание, что я изменил последнюю строку на res.status(500).send(), как рекомендовано в официальной серии видео от Дуга, см. https://www.youtube.com/watch?v=7IkUgCLr5oA и https://www.youtube.com/watch?v=7IkUgCLr5oA

enter image description here

...