2

我使用Firebase云端函数编写了一个云端函数,该函数将通知发送到某些Firebase消息传递主题。该函数的最后部分定义要发送的有效载荷,然后发送:Firebase消息传送的云端函数中的有效负载错误

// 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); 

但是,我得到的错误日志在我火力地堡控制台:

Error: Messaging payload contains an invalid value for the "notification.data" property. Values must be strings.

当我退出的有效载荷我证实,它是所有字符串:

{ 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] 
           ] 
          ] 

我怎样才能做到在我的云功能添加额外的数据,如我在斯威夫特的代码呢?

+2

我认为你需要推广你的'data'上升了一个层次:'{通知:{}数据:{}}' –

+0

好吧,因为我只是送'data'下的一个字段我只是将'myId'的值设置为'data'而不是嵌套它。不知道为什么它不起作用。 – MarksCode

+0

Hi @MarksCode。在迈克尔布莱提到的修改有效载荷之后它还没有工作吗?你的评论有点不清楚。 –

回答

4

正如其他人在评论中解释的那样,data对象应该往里走​​,
内部没有notification

试试下面的代码:

// javascript code in cloud functions 
const payload = { 
     'notification': { 
     'title': `${toTitleCase(name)} just logged an event`, 
     'body': `${events[eventType]} for ${toTitleCase(petName)}`, 
     }, 
     // NOTE: The 'data' object is inside payload, not inside notification 
     'data': { 
      'personSent': userSent 
     } 
    }; 
console.log(payload); 
admin.messaging().sendToTopic(pet_Id, payload); 
相关问题