所以我是新的javascript和云函数,我有这个代码发送通知的设备上,当一个数据被创建在一个特定的节点上。这个代码的工作,它能够发送通知,每当数据被添加,但它只发送在一个特定的设备上,因为我只使用了一个令牌进行测试。我想知道的是,我如何从每个位于特定节点的用户那里得到所有的令牌。我知道我必须使用一个循环,并把令牌放在一个数组中,但我应该怎么做呢?有没有我可以使用的示例代码。谢谢你的帮助,将不胜感激。
这是我的数据库结构:
Database name
{
"Registered Admins": {
"0zPSXiHR05PG2MogS0l4xzWuMUc2": {
"User Details",
"User Details",
"Token": "etms39B4TzCYBujRNhcAQE.........",
"User Details"
},
"bwjOH8ndKeeMfwy5UvhChVtyNov1": {
"User Details"
"Token": "etms39B4TzCYBujRNhcAQE........."
"User Details"
}
}
}
这是我的javascript代码:
"use strict";
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.sendNotificationtoDevice =
functions.database.ref("/Emergencies/{pushId}")
.onCreate(async (snapshot) => {
// Load all the users from Registered Admins
const adminsSnapshot = await admin.database().ref("/Registered
Admins").once("value");
let tokens = [];
// Loop over adminsSnapshot
adminsSnapshot.forEach((adminSnapshot) => {
tokens.push(adminSnapshot.child("Token").val());
});
console.log(tokens);
const payload = {
notification: {
title: "New Emergency!",
body: "Someone needs help check application now!",
},
};
console.log("Hello User");
await admin.messaging().sendToDevice(tokens, payload);
});
这是我用Firebase模拟器套件尝试过的:我尝试通过导入json文件重新创建相同的结构,并检查数据库触发器。
我还尝试重新创建了相同的场景,在其中我在“Emergencies”节点上添加了数据。
我应该如何调试使用模拟器套件?我似乎找不到任何文件,可以帮助我在这方面
1条答案
按热度按时间v9tzhpje1#
要从
/Registered Admins
加载所有令牌,可以执行以下操作:您可以使用这些标记来调用FCM API,以便向所有这些标记发送消息。