Firebase Admin отправляет уведомление на другую учетную запись службы в nodejs - PullRequest
0 голосов
/ 13 мая 2018

У меня есть два маршрута в nodejs.Один такой: one.js

var admin = require("firebase-admin");
var topic = "/topics/news";

var serviceAccount = require("/path/serice-1-firebase-adminsdk.json");

var firebase = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://service-1-database.firebaseio.com/"
});

console.log(firebase.name);

Затем я отправляю уведомление вот так

router.post('/', function(req, res) {
  var payload = {
    data: {
      title: req.body.title,
      message: req.body.message
    }
  };
  admin.messaging().sendToDevice(topic, payload)
    .then(function(response) {

      console.log("value of topic ", topic);
      console.log("Successfully sent message:", response);
    })
    .catch(function(error) {
      console.log("Error sending message:", error);
    });

});

А на другом маршруте two.js я делаю это

var admin = require("firebase-admin");
var topic = "/topics/news";
var serviceAccount = require("path/service-2-firebase-adminsdk.json");

var firebase = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://service-2-database.firebaseio.com"
},"other");
console.log(firebase.name);

Затем я снова отправляю уведомление следующим образом

router.post('/notify',function(req,res){
  var category = req.body.category;

      var payload = {
        data: {
          title: "title",
          message: "desc"
        }
      };


      admin.messaging().sendToDevice(topic, payload)
        .then(function(response) {
          console.log("value of topic ", topic);
          console.log("Successfully sent message:", response);
        })
        .catch(function(error) {
          console.log("Error sending message:", error);
        });

});

Когда я пытаюсь отправить уведомление с использованием two.js для службы-2, уведомление отправляется для службы-1, ноСервисный аккаунт на двоих - сервис-2.Чего мне не хватает?

1 Ответ

0 голосов
/ 14 мая 2018

admin.messaging() всегда относится к пространству имен messaging приложения по умолчанию.В вашем случае приложение по умолчанию - это приложение, инициализированное в one.js.Таким образом, наблюдаемое поведение является правильным.Чтобы отправлять уведомления с помощью пользовательского приложения, необходимо сделать следующее:

const otherApp = admin.app('other');
admin.messaging(otherApp).sendToDevice(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...