Firebase将通知推送到不同的令牌组

时间:2018-09-20 05:50:48

标签: javascript firebase

我想向不同的令牌组发送通知。

我的实时数据库看起来像这样

  • fcm令牌
    • HHE数据
      • (令牌)
    • HHE其他
      • (令牌)

此代码仅适用于fcm令牌组之一。

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

exports.notification= functions.database.ref('notification/{id}').onWrite(evt => {
  const payload = {
    notification:{
        title : 'Ny person på listen',
        body : '',
        badge : '1',
        sound : 'default'
    }
  };

  return admin.database().ref('fcm-token/HHE Data').once('value').then(allToken => {
    if(allToken.val()){
        console.log('token available');
        const token = Object.keys(allToken.val());
        return admin.messaging().sendToDevice(token,payload);
    }else{
        console.log('No token available');
    }
  });
});

如何获取{id}是什么?

路径“ notification / {id}”在代码之外是特定的 image

但我想这样使用它:

return admin.database().ref('fcm-token/' + id).once('value').then(allToken => {
  if(allToken.val()){
    console.log('token available');
    const token = Object.keys(allToken.val());
    return admin.messaging().sendToDevice(token,payload);
  }else{
    console.log('No token available');
  }
});

我想出的唯一解决方案是为每个小组手动进行。 并为每个函数创建函数,因为它检查的路径在代码外部是特定的。 image

像这样:

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

exports.notification = functions.database.ref('notification/HHE Data/{id}').onCreate(evt => {
    const payload = {
        notification:{
            title : 'Ny person på listen',
            body : '',
            badge : '1',
            sound : 'default'
        }
    };

      return admin.database().ref('fcm-token/HHE Data').once('value').then(allToken => {
        if(allToken.val()){
            console.log('token available');
            const token = Object.keys(allToken.val());
            return admin.messaging().sendToDevice(token,payload);
        }else{
            console.log('No token available');
        }
    });

    return admin.database().ref('notification').once('value');
});

0 个答案:

没有答案