在我的flutter应用程序中,我已将每个设备 token 保存到firebase数据库中的集合中,并且编写了用于firebase云功能的代码,因此它会向订阅主题并让其 token 位于 token 中的每个用户发送一条消息(通知)集合,但是当我向订阅的主题添加内容时,它不会发送任何内容,这是在索引文件中使用javascrpit编写的云函数代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().functions);
var newData;
exports.myTrigger = functions.firestore.document('messages/{messageId}').onCreate(async (snapshot, context) => {
//
if (snapshot.empty) {
console.log('No Devices');
return;
}
newData = snapshot.data();
const deviceIdTokens = await admin
.firestore()
.collection('messages')
.get();
var tokens = [];
for (var tokened of deviceIdTokens.docs) {
tokens.push(tokened.data().token);
}
var payload = {
notification: {
title: 'Push Title',
body: 'Push Body',
sound: 'default',
},
data: {
message: newData.message,
click_action: 'FLUTTER_NOTIFICATION_CLICK',
},
};
try {
const response = await admin.messaging().sendToDevice(tokens, payload);
console.log('Notification sent successfully');
} catch (err) {
console.log(err);
}
});
这是我的数据库结构
和 token 收集:
我究竟做错了什么?
最佳答案
尝试他的代替:
我应该写:
'''
const deviceIdTokens = await admin
.firestore()
.collection('tokens')
.get()
'''
也用于通过数据库发送消息,我应该在字段中写上“消息”,因为我将“数据”的键命名为“消息” :)
关于javascript - 用于推送通知的Firebase云功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62019409/