2

Ich schrieb eine Cloud-Funktion mit Cloud-Funktionen für Firebase, die Benachrichtigungen an bestimmte Themen von Firebase Messaging sendet. Die letzten Teile der Funktion der Nutzlast definieren, gesendet werden dann sendet sie:Payload-Fehler in Cloud-Funktionen für 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); 

Aber ich bin immer das Fehlerprotokoll in meiner Konsole Firebase:

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

Wenn ich die Nutzlast abzumelden ich bestätigte es alle Strings ist:

{ notification: 
    { title: 'Turtle Dude just logged an event', 
    body: 'Walk for Beer', 
    data: { personSent: 'mfsP8U0qDdQL4rrrbXp6K0YsF423' } } } 

Allerdings, wenn ich die gleiche Nutzlast von meinem iPhone app senden (was ich versuche da zu vermeiden, dass bedeutet, dass ich die Messaging-privaten Schlüssel auf der Client-Seite zu speichern, haben) ich ist in der Lage, die zusätzlichen Daten, die ich senden will einfach gut befestigen:

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

Wie kann ich erreichen, das Hinzufügen zusätzliche Daten in meiner Cloud-Funktion, wie ich in meinem Swift-Code?

+2

Ich glaube, Sie brauchen Ihre 'data' auf eine Ebene zu fördern:' {Benachrichtigung: {}, Daten: {}} ' –

+0

Nun, da ich nur das Senden ein Feld unter 'data' Ich habe' myId' einfach den Wert zu 'data' gemacht, anstatt ihn zu verschachteln. Nicht wirklich sicher, warum es nicht funktioniert hat. – MarksCode

+0

Hallo @MarksCode. Funktioniert es immer noch nicht, nachdem die Payload verändert wurde, wie Michael Bleich erwähnt hat? Es ist ein bisschen unklar von Ihrem Kommentar. –

Antwort

4

Wie andere in den Kommentaren erklärt, das data Objekt innerhalb payload,
NICHT innerhalb notification gehen sollte.

Versuchen Sie, den folgenden Code:

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