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); 
相關問題