我无法向用户发送通知。当我编写这段代码时,完全没有问题。但是我在那里手动写了令牌。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const fcm = admin.messaging();
exports.senddevices = functions.firestore
.document("chats/{chatID}/messages/{messageID}")
.onCreate(async (snapshot, context) => {
const msg = snapshot.get("msg");
const sendBy = snapshot.get("sendBy");
const userToken = 'doXfzpEATv2Bo_ZK9U1FHb:APA91bEUsqRWukp9mlSSpVxL1Dqqqki9ETRs63XlUfkj18h8d3ObKsjyzFwTT9MWLRVOR3ZcFHufVEY_nzsuylUNlP5bO52rU5seROC49meJZ1rANcYMRfC3wXPC2RbW6WpE0qnDTBuV';
const payload = {
notification: {
title: "from " + sendBy,
body: "subject " + msg,
sound: "default",
},
};
return fcm.sendToDevice(userToken, payload);
});
但是当我尝试此代码时,我无法发送通知。 index.js 文件是这样的:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
exports.sendNotifications = functions.firestore
.document('chats/{chatID}/messages/{messageID}')
.onCreate(async (snapshot, context) => {
const { msg, sendBy } = snapshot.data();
const { chatID } = context.params;
const chatCol = await db
.collection('chats')
.doc(chatID)
.get();
const members: string[] = chatCol.get('members');
members
.filter((member) => member !== sendBy)
.map(async (member) => {
const userCol = await db.collection('users').doc(member).get();
const token = userCol.get('token');
if (!token) {
return;
}
await admin.messaging().sendToDevice(token, {
data: {
chatID,
userId: sendBy,
memberId: member,
},
notification: {
title: 'You have a message',
body: msg,
clickAction: 'FLUTTER_NOTIFICATION_CLICK',
},
});
});
});
我可以部署所有代码并发送到 firebase。但根本没有通知。顺便说一句,我有两个集合,它们是“聊天”和“用户”