【发布时间】:2025-11-26 00:55:02
【问题描述】:
我正在尝试使用 Firebase 函数发送 FCM,这是我正在使用的代码
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
admin.firestore().settings({
timestampsInSnapshots: true
});
var token = 'token_value';
var sender = 'sender_value';
var reciever = 'reciever_value';
var message = 'message_value';
var payload ='payload_value';
var db = admin.firestore();
exports.sendFollowerNotification =
functions.database.ref('/m/{messageid}')
.onCreate((snapshot, context) => {
console.log('v21');
message = context.params.messageid;
console.log('Message Id:', message);
reciever = snapshot.val().r;
console.log('Message reciever: ', reciever);
sender = snapshot.val().s;
console.log('Message sender: ', sender);
payload = {
data: {
id: `${message}`,
sender: `${sender}`
}
};
console.log('Payload Created');
var tokenRef = db.collection(reciever).doc('t');
console.log('Fetching Token');
tokenRef.get()
.then(doc => {
console.log('Fetching Token started');
if (!doc.exists) {
console.log('Token doesnt exist ');
} else {
token = doc.data().v;
console.log('Token data:', token);
}
console.log('End Then');
return token;
})
.catch(err => {
console.log('Error getting token', err);
}).then((token) => {
console.log('Sending FCM now');
admin.messaging().sendToDevice(token,payload);
return console.log('Successfully sent message:');
})
.catch((error) => {
console.log('Error sending message:', error);
});
})
问题是 FCM 的接收延迟很大(大约 40 秒),但是从 Firebase 控制台发送的 fcm 几乎立即被接收(大约 2-3 秒)。 由于我是一名 android 开发人员并且没有 Node.js 的经验,我认为 JS 代码有问题。告诉我有什么问题或可能的解决方法帮助我。
【问题讨论】:
-
一个问题是你没有从你的函数中返回一个只有在所有异步工作完成时才解决的承诺。
标签: javascript node.js firebase firebase-cloud-messaging google-cloud-functions