我使用了Firebase的Cloud Functions for Firebase编写了一个云函数,用于向Firebase Messaging的特定主题发送通知。函数的最后部分定义要发送的有效载荷,然后将其发送:
// javascript code in cloud functions
const payload = {
'notification': {
'title': `${toTitleCase(name)} just logged an event`,
'body': `${events[eventType]} for ${toTitleCase(petName)}`,
'data': {
'personSent': userSent
}
}
};
console.log(payload);
admin.messaging().sendToTopic(pet_Id, payload);
然而,我在我的Firebase控制台中收到错误日志:
错误:消息负载包含“notification.data”属性的无效值。 值必须是字符串。
当我记录该负载时,我确认它全部是字符串:
{ notification:
{ title: 'Turtle Dude just logged an event',
body: 'Walk for Beer',
data: { personSent: 'mfsP8U0qDdQL4rrrbXp6K0YsF423' } } }
然而,当我从我的 iPhone 应用程序发送相同的有效载荷时(我试图避免这样做,因为这意味着我必须在客户端存储消息私钥),我能够成功地附加我想要发送的额外数据:
// Swift code in iPhone app
let body: [String: Any] = ["to": "/topics/\(currentPet)",
"priority" : "high",
"notification" : [
"body" : "\(events[eventType]) for \(petsName.localizedCapitalized)",
"title" : "\(myName.localizedCapitalized) just logged an event",
"data" : ["personSent": myId]
]
]
我该如何在云函数中像在Swift代码中一样添加额外的数据?
{notification: {}, data: {}}
。 - Michael Bleigh'data' : userSent
,而不是嵌套它,这样可以正常工作。这很好,因为我只发送了一个数据,但如果我想发送多个数据,我会尝试迈克尔的建议。 - MarksCode