错误:提供给 sendToDevice() 的注册令牌必须是非空字符串或非空数组



我正在尝试使用 Firebase 云函数将通知发送到点半径范围内的设备。我能够获取圈内设备的 ID,但我无法获取令牌,令牌为 null,如使用 console.log(token( 打印。

const getdevicetokenpromise = db.ref('/DriversAvailable/{key}/token').once('value');
console.log(key); //this value is right
return getdevicetokenpromise.then(result => {
console.log(result.val());   //this value is null, this is the problem
var token = result.val();
const payload = {
notification: {
title: 'title',
body: 'hey, well done dude',
icon: 'default'
}
};

return admin.messaging().sendToDevice(token, payload)
.then((response)=> {
return console.log("Successfully sent message:", response);
})
.catch((error) =>{
console.log("Error sending message:", error);
});
});

我已经尝试了堆栈溢出上建议的大部分内容,但找不到解决方案。谢谢。

看起来您假设key的值应该插入到此字符串中:

const getdevicetokenpromise = db.ref('/DriversAvailable/{key}/token').once('value');

不过,这不是它的工作方式。 您实际上是在查询该确切的字符串,而无需插入key。 我想你的意思是使用 JavaScript 语法进行变量插值,在字符串周围使用反引号和 ${} 来分隔变量:

const getdevicetokenpromise = db.ref(`/DriversAvailable/${key}/token`).once('value');

相关内容

  • 没有找到相关文章

最新更新