如何在云功能中传递动态参考?
我想使用云功能为特定用户发送推送通知。
这是我的代码:
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',
}
};
有人在那指导我吗?
回答如下:我动态地实现了它。希望它可以帮助某人。
这是我的代码:
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 => {
});
}
});
如果要更改通知内容,可以从应用程序端更新后从数据库中获取。