如何向各种主题发送通知?

时间:2017-11-27 07:17:57

标签: javascript android firebase firebase-realtime-database google-cloud-functions

请在这里阅读:

情况:

Person A想要向他所领导的许多主题发送通知,因此有一天他希望第二天将主题database发送到主题math,依此类推。

Person B是另一位领导者,并希望这样做,向主题English发送通知,第二天向French发送通知。

主题包含为这些主题注册的各种设备。

这是数据库的一部分:

{
 "Class" : {
    "push_id_here" : {
          "name" : "English",
          "teachid" : "teacher_id_here"
    },
    "push_id_here1" : {
        "name" : "math",
         "teachid" : "teachers_id_here"
   }
 },
"messages" : {
"-KzuGjz90g8gAjgVG68O" : {
  "message" : "bye",
  "title" : "Good"
  }
}
}

在应用程序中,就像这样,Person A点击items示例列表(点击英语),并且有一个英语内的学生列表,然后人员A必须发送一个通知该列表。

我尝试了什么:

const functions = require('firebase-functions');

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



exports.pushNotification = 
functions.database.ref('/messages/{pushId}').onWrite( event => {

console.log('Push notification event triggered');


 var valueObject = event.data.val();


//Create a notification
const payload = {
    notification: {
        title:valueObject.name,
        body: valueObject.text,
        sound: "default"
    },
  };

const options = {
    priority: "high",
    timeToLive: 60 * 60 * 24
};


return admin.messaging().sendToTopic("English", payload, options);
});

以上cloud functions有效但只发送给English。我不想在函数中写出主题的名称。我想要做的是,如果Person A输入了注册到主题database的学生列表,则会向这些人发送通知。如果Person A输入了注册到主题Math的学生列表,则会向这些人发送通知。如果Person B输入了注册到主题french的学生列表,则会向这些人发送通知等等。

0 个答案:

没有答案