【问题标题】:How to pass dynamic reference in Cloud functions?如何在云函数中传递动态引用?
【发布时间】:2018-06-01 13:15:51
【问题描述】:

我想使用云功能为特定用户发送推送通知。

这是我的代码:

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

exports.sendPushNotification = functions.database.ref('/Users/{id}').onWrite(event => {
const payload = {
    notification: {
        title: 'Test message',
        body: 'Hope you are fine',
        badge: '1',
        sound: 'default',
    }
};

return admin.database().ref('fcmToken').once('value').then(allToken => {
    if(allToken.val()){
        const token = Object.keys(allToken.val());
        return admin.messaging().sendToDevice(token, payload).then(response => {

        });
    }
});
});

但是,如何动态进行,即我想为特定用户发送推送通知,此代码正在向所有注册用户发送通知。因此,帮助我将静态 id(db 引用)更改为动态(db 引用),以及如何在此代码行中传递不同的通知内容:

const payload = {
    notification: {
        title: 'Test message',
        body: 'Hope you are fine',
        badge: '1',
        sound: 'default',
    }
};

有人可以指导我吗?

【问题讨论】:

    标签: node.js firebase firebase-cloud-messaging google-cloud-functions


    【解决方案1】:

    我是动态实现的。希望它可以帮助某人。

    这是我的代码:

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp(functions.config().firebase);
    
    exports.sendPushNotification = functions.database.ref('/Users/{id}').onWrite(event => {
    
    var eventSnapshot = event.data;
        var particularUser = eventSnapshot.child('City');
        if (particularUser.changed()) {
          const payload = {
                  notification: {
                      title: 'Test message',
                      body: 'Hope you are fine',
                      badge: '1',
                      sound: 'default',
                  }
              };
    
              var getToken = eventSnapshot.child('fcmToken');
    
                      const token = Object.keys(getToken.val());
                      return admin.messaging().sendToDevice(token, payload).then(response => {
    
                      });
    
        }
    
    
    });
    

    如果要更改通知内容,您可以在应用端更新后从数据库中获取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2017-04-21
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多