使用 node.js 通过条件向多个主题发送 FCM 通知的正确语法是什么?



我正在尝试从我的节点.js服务器向安卓设备发送 fcm 通知。 它适用于单个主题,但在有多个主题时失败。

注意:使用单个主题,例如,

var topic = 'MaleFemale'; // here i have only one topic 
var message = {
android: {
ttl: 5*60*1000, // 5 min in milliseconds
priority: 'normal',
notification: {
title: 'Someone want to chat',
body: 'Tap to join chat',
icon: 'stock_ticker_update',
color: '#2C5AE1'
}
},
topic: topic
};
send.admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});

注意:在多个主题中失败,例如,

var topic = "'FemaleAny' in topics || 'MaleAny' in topics";//here i have multiple topic 
var message = {
android: {
ttl: 5*60*1000, // 5 min in milliseconds
priority: 'normal',
notification: {
title: 'Someone want to chat',
body: 'Tap to join chat',
icon: 'stock_ticker_update',
color: '#2C5AE1'
}
},
condition: topic
};
send.admin.messaging().sendToCondition(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});

错误:

throw new error_1.FirebaseMessagingError(error_1.MessagingClientErrorCode.INVALID_RECIPIENT, 'Condition provided to sendToCondition() must be a non-empty string.');
^
Error: Condition provided to sendToCondition() must be a non-empty string.
at FirebaseMessagingError.FirebaseError [as constructor] (/Users/kdblue/Desktop/Android Projects/ChatApp/server/node_modules/firebase-admin/lib/utils/error.js:39:28)
at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/Users/kdblue/Desktop/Android Projects/ChatApp/server/node_modules/firebase-admin/lib/utils/error.js:85:28)
at new FirebaseMessagingError (/Users/kdblue/Desktop/Android Projects/ChatApp/server/node_modules/firebase-admin/lib/utils/error.js:241:16)
at Messaging.sendToCondition (/Users/kdblue/Desktop/Android Projects/ChatApp/server/node_modules/firebase-admin/lib/messaging/messaging.js:637:19)
at manageQueue (/Users/kdblue/Desktop/Android Projects/ChatApp/server/index.js:268:40)
at Socket.socket.on (/Users/kdblue/Desktop/Android Projects/ChatApp/server/index.js:25:9)
at Socket.emit (events.js:182:13)
at /Users/kdblue/Desktop/Android Projects/ChatApp/server/node_modules/socket.io/lib/socket.js:528:12
at process._tickCallback (internal/process/next_tick.js:61:11)

试过但没有为我工作:-

1( https://firebase.google.com/docs/cloud-messaging/admin/send-messages?authuser=0

2( 通过条件将 Firebase 云消息 (FCM( 发送到多个主题的正确语法是什么

它有点奇怪,无论如何,我正在回答我的问题 我通过将方法sendToCondition()更改为send()来解决问题。

var condition = "'FemaleAny' in topics || 'MaleAny' in topics";
var message = {
android: {
ttl: 30*1000, //  30sec in milliseconds
priority: 'normal',
notification: {
title: 'Someone want to chat',
body: 'Tap to join chat',
icon: 'stock_ticker_update',
color: '#2C5AE1',
tag: '4'
}
},
condition: condition
};
send.admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});

最新更新