我有一个使用Firebase的Android 客户端应用程序和管理员应用程序。每当用户在客户端应用程序中注册时,我都需要向管理员应用程序发送推送通知。我正在尝试使用Cloud Functions for Firebase
。我已经导出了这个函数,我也可以在firebase控制台上看到它。
这是我的 index.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}/{regToken}').onWrite(event => {
if (event.data.previous.exists()) {
return;
}
const userId = event.params.userId;
const regToken = event.params.regToken;
// Notification details.
const payload = {
notification: {
title: 'You have a new User.',
body: `${userId} is the id.`,
}
};
return admin.messaging().sendToDevice(regToken, payload);
});
这是我在firebase的数据库结构:
如果我使用任何在线门户发送推送甚至FCM发送推送到管理应用程序进行测试,我正在接受推送。但是这个Cloud Function并没有发送推送。有人可以指导我,我做错了什么。
修改
如果我将功能更改为以下内容,则可以正常工作。但我仍然想知道为什么上述功能不起作用。
exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}').onWrite(event => {
if (event.data.previous.exists()) {
return;
}
const userId = event.params.userId;
var eventSnapshot = event.data;
const regToken = eventSnapshot.child("regToken").val();
Notification details.
const payload = {
notification: {
title: 'You have a new User.',
body: `${userId} is the id.`,
}
};
return admin.messaging().sendToDevice(regToken, payload);
});
答案 0 :(得分:1)
在原始代码中,您有:
R.map(double, [1, 2, 3])
const regToken = event.params.regToken;
未返回event.params.regToken
的值,而是返回参考中wildcard path segment的值。