我将通过触发器将通知发送到设备。 创建“ / chats / {chatId}”下的对象时触发该触发器。 聊天对象的结构如下:
{
members: {
0: "userId1",
1: "userId2"
},
...
}
我的代码背后的逻辑是为每个成员读取userToken(每个用户的财产);向每个令牌发送通知(有效负载)。
下面的代码有效。
exports.onChatCreate = functions.database
.ref("/chats/{chatId}")
.onCreate((chatSnap, context) => {
// const members = chatSnap.val().members; // works?!
let database = admin.database();
let messaging = admin.messaging();
const chatId = context.params.chatId;
let tokens = [];
let notifications = [];
const payload = {
notification: {
title: "MyTitle",
body: "Notification description"
}
};
chatSnap.val().members.forEach(function(m) {
database
.ref("users")
.child(m)
.once("value")
.then(function(snapshot) {
let fcmToken = snapshot.val().FCMToken;
if (fcmToken) {
tokens.push(fcmToken);
messaging.sendToDevice(fcmToken, payload);
}
});
});
return Promise.all(notifications);
});
现在,在推送令牌数组中的每个令牌之后,我想发送具有原子更新的通知。我准备了这段代码,但不起作用。
return loadUsers().then(users => {
let tokens = [];
for (let user of users) {
tokens.push(user.pushToken);
}
let payload = {
notification: {
title: 'Title',
body: 'Notification description'
}
};
return admin.messaging().sendToDevice(tokens, payload);
});
我在哪里错了?!