2

Ich möchte jedes Mal eine Benachrichtigung erhalten, wenn ein neues Kind in der Firebase-Datenbank erstellt wurde. Das habe ich bis jetzt erreicht. Mit dieser Codezeile erhalten Sie eine Benachrichtigung, wenn ein neues Kind erstellt wurde. Aber das Problem ist, dass die Benachrichtigung immer mit dem Titel: "Titel", Body: "Komm schau es" ist. Jetzt ist meine Frage, wie ich eine Benachrichtigung mit dem Wert der Stadt und Zeit erstellt (die Struktur siehe unten)Firebase Push Benachrichtigung, wenn ein neues Kind zur Datenbank hinzugefügt wird

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.sendPushNotification = functions.database.ref('/Rollerbanken/{Id}').onCreate(event => { 

    const payload = { 
    notification: { 
    title: 'Title', 
    body: 'come check it', 
    badge: '0', 
    sound: 'default', 
    } 
}; 
    return admin.database().ref('fcmToken').once('value').then(allToken => { 
    if(allToken.val()) { 
    const token = Object.keys(allToken.val()); 
    return admin.messaging().sendToDevice(token, payload).then(response => { 
      }); 
     }; 
    }); 
}); 

Meine Struktur:

{ 
    "Rollerbanken" : { 
    "-KuKDXL2pY9MMtw551ZI" : { 
     "Extrainformatie" : "", 
     "Latitude" : "51.9145932124898", 
     "Longitude" : "5.86974696138047", 
     "Staater" : "Staat er", 
     "Staaternietmeer" : "", 
     "City" : "Overbetuwe", 
     "Time" : "15 : 43", 
     "TijdControle" : "15 : 43", 
     "TijdControleniet" : "", 
     "TypeControle" : "Rollerbank" 
    } 
    } 

Ich hoffe, dass Sie mir helfen können!

+0

Sie sollten sich Cloud Functions for Firebase ansehen und einen Datenbanktrigger schreiben, der das Admin SDK verwendet, um eine Benachrichtigung zu senden, wenn sich ein Speicherort in der Datenbank ändert. https://firebase.google.com/docs/functions/ –

Antwort

0

Grundsätzlich müssen Sie Ihr Nutzlastobjekt für jede Benachrichtigung ändern, die Sie senden möchten. Die gute Nachricht ist, da es nur ein Objekt ist, können Sie leicht darauf zugreifen, also müssen Sie nur payload.name = YOURDESIREDVALUEHERE

Also was Sie tun müssen, ist Ihren neuen Schlüssel, (Token) nehmen und damit auf Ihr Objekt zugreifen. Es sei denn, ich irre erzeugt Object.keys ein Array, so dass Ihr Zugangsschlüssel sollte Token [0], dann verwenden, um Ihren Wert zugreifen, wie diese allToken.val()[token[0]]["City"]

Ihr Code würde wie folgt aussehen:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
exports.sendPushNotification = functions.database.ref('/Rollerbanken/{Id}').onCreate(event => { 

    const payload = { 
    notification: { 
    title: 'Title', 
    body: 'come check it', 
    badge: '0', 
    sound: 'default', 
    } 
}; 
    return admin.database().ref('fcmToken').once('value').then(allToken => { 
    if(allToken.val()) { 
    const token = Object.keys(allToken.val()); 
    payload.notification.title = allToken.val()[token[0]]["City"] + allToken.val()[token[0]]["Time"] //change here 
    return admin.messaging().sendToDevice(token, payload).then(response => { 
      }); 
     }; 
    }); 
}); 
+0

Es werden keine Benachrichtigungen mehr gesendet. –

+0

seine Ursache, die ich vermasselt habe, werde ich bearbeiten – TheCog

+0

Es funktioniert immer noch nicht. –

Verwandte Themen