我正在尝试从我的节点.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);
});