我使用firebase admin的7.2.0版本发送fcm推送通知,使用sendMutlicast
方法:
async function sendPushRequest({tokens, title, body, customData}) => {
const message = {
notification: {
title,
body,
},
data: customData,
tokens,
}
return firebase.messaging().sendMulticast(message)
}
这是我得到的错误
Error: Exactly one of topic, token or condition is required
at FirebaseMessagingError.Error (native)
at FirebaseMessagingError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:39:28)
...
我试着记录数据,下面是sendPushRequest函数调用的对象:
{
tokens: [ null, null, null, 'home-test', null, null ], // this one is a recent sample, I've been getting this error for a while now
title: 'some string',
body: 'some other string',
customData: {
title: 'some string',
body: 'some other string',
bigText: 'again another string',
color: '#9f0e27',
smallIcon: 'notificon',
sound: 'default'
}
}
我不确定是什么原因导致了这个错误!
我也遇到了这个问题,在nodejs中配置谷歌管理firebase非常困难。我发现有一个包裹可以很好地处理这个问题。
https://www.npmjs.com/package/fcm-notification
但它有一些小问题。你不能将它传递给多个firebase配置。这里有一些例子:
const fcm = require('fcm-notification');
const fcm_key = require('../config/customer/fcm.json');
const FcM = new fcm(fcm_key);
module.exports.sendToSingleUser = async (message, token) => {
let message_body = {
notification: {
...message
},
token: token
};
FcM.send(message_body, function (err, response) {
if (err) {
return err
} else {
return response
}
})
}
也面临此错误。计算出我们的令牌数组包含null
或undefiend
值。通过从令牌数组中删除它来解决问题,一切都很好。