gpt4 book ai didi

node.js - Firebase 云功能不发送异步推送通知

转载 作者:行者123 更新时间:2023-12-04 17:23:06 24 4
gpt4 key购买 nike

我的目标是在用户发送消息时发送推送通知。我试图通过从 firestore 数据库中检索所有推送 token ,并在每次将新消息添加到实时数据库时使用这些 token 发送多播消息来实现这一点。

作品

第一个示例有效。没有 token 检索, token 是硬编码的。我确实收到了通知。

exports.notifyUsers = functions.database.ref('/messages/{messageId}').onCreate((liveSnapshot, context) => {
const name = context.params.messageId;
const message = liveSnapshot.val().toString();
const tokens = [
"e6erA_qM...",
"ePU9p_CI...",
];
const payload = {
notification: {
title: `New message from ${name}`,
body: message,
badge: '1',
sound: 'default'
},
tokens: tokens,
}
const res = admin.messaging().sendMulticast(payload);
console.log(`response: ${res}`);

不起作用

这不起作用,我没有收到任何通知。

exports.notifyUsers = functions.database.ref('/messages/{messageId}').onCreate(async (liveSnapshot, context) => {
const name = context.params.messageId;
const message = liveSnapshot.val().toString();
const snapshot = await admin.firestore().collection('users').get();
const tokens = snapshot.docs.map(doc => doc.data().token);
const payload = {
notification: {
title: `New message from ${name}`,
body: message,
badge: '1',
sound: 'default'
},
tokens: tokens,
}
const res = await admin.messaging().sendMulticast(payload);
console.log(`response: ${res}`);

我已验证从数据库中检索到的 token 与使用以下代码硬编码的 token 相同。

exports.notifyUsers = functions.database.ref('/messages/{messageId}').onCreate(async (liveSnapshot, context) => {
const hardcodedTokens = [
"e6erA_qM...",
"ePU9p_CI...",
];
const snapshot = await admin.firestore().collection('users').get();
const tokens = snapshot.docs.map(doc => doc.data().token);
let same = true;
hardcodedTokens.forEach(el => {
if (!tokens.includes(el)) {
same = false;
}
});
console.log(same);
})

这会在 firebase 云函数控制台中记录 true


该函数使用 Node 12。

最佳答案

最近遇到了类似的问题,根据Firebase docs把Android和iOS的具体字段打出来解决了:

   const message = {
"notification": {
"title": `New message from ${name}`,
"body": message,
},
'apns': {
'payload': {
'aps': {
'badge': 1,
},
},
},
'android':{
'notification':{
'notificationCount': 1,
},
},
"tokens": tokens,
}

关于node.js - Firebase 云功能不发送异步推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65001285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com