2016-08-03 24 views
7

Ich habe eine App erstellt, die Firebase-Echtzeitdatenbank und -Speicher verwendet. Meine App ermöglicht es Benutzern, sich gegenseitig zu benachrichtigen, aber ich weiß nicht, wie ich den Benutzer benachrichtigen soll, wenn er eine neue Nachricht erhalten hat. Ich speichere alle Nachrichten in einem Knoten namens Nachrichten. Ich speichere dann die Nachrichtenbeziehungen in einem anderen Knoten namens "Benutzer-Nachrichten". Wie überwache ich den Knoten "Benutzernachrichten", um den Benutzer mit einer Benachrichtigung darüber zu benachrichtigen, dass er eine neue Nachricht hat? Ich bin mit der Beobachtung von Ereignistypen und dergleichen vertraut, d.h.: .Value und .ChildAdded, aber ich bin mir nicht sicher, wie ich ein Ereignis auslösen soll, um dem Benutzer eine Benachrichtigung zu senden.Senden von Push-Benachrichtigungen Wenn ein Firebase-Echtzeit-Datenbankknoten aktualisiert wird

bearbeiten: gab ein wenig mehr Hellsichtigkeit.

+0

folgen https://firebase.google.com/docs/notifications/ios/console-audience –

+3

Ich bin nicht sicher, wie dass meine Frage beantwortet. Das erlaubt mir nur, eine Push-Benachrichtigung an eine bestimmte Benutzerliste zu senden. –

Antwort

0

Wie Sie erwähnt haben, können Sie child_added Ereignis verwenden, um zu überwachen, sobald eine neue Nachricht an user-messages und firebase hinzugefügt wird, wird Ihr Event-Handler aufrufen, wenn ein neues Kind hinzugefügt wird.

ref.child('user-messages').on('child_added', (snapshot) => { 
    // Read the message and send notification here 
}) 

Sie können die user-message auch zu aktualisieren, nachdem es behandelt wurde, so dass Sie keine doppelten Benachrichtigungen, wenn die App neu gestartet Senden beenden.

+0

Ich brauche es, um den Benutzer zu warnen, wenn die App nicht läuft oder wenn die App im Hintergrund ist. –

+0

Dies sollte auf der Serverseite geschehen. Es spielt also keine Rolle, ob die App läuft oder im Hintergrund läuft. –

+0

Ich denke wir reden hier vielleicht aneinander vorbei. Die Snapshots finden nur statt, wenn Sie sie in eine Funktion einfügen und dann diese Funktion aufrufen, oder Sie tun es, wenn die Ansicht geladen ist oder geladen wird. Dies bedeutet, dass der Beobachter die Datenbank nur beim Aufruf beobachten wird. Dies bedeutet, dass der Benutzer nur dann eine Warnung erhalten kann, wenn er sich in dieser Ansicht befindet und die App ausgeführt werden muss. Ich brauche etwas, das meine Datenbank beobachten kann, wenn die App nicht läuft, und dann dem Benutzer eine Benachrichtigung sendet, wenn der Knoten aktualisiert wird. –

2

Also habe ich nicht zufällig gesehen, dass Firebase Google Cloud Messaging verwenden kann, das in der Lage zu tun scheint, was ich will. Für zukünftige Referenz hat Firebase das IOS-Setup hier: Firebase Cloud Messaging SetUp

+0

Hallo Taylor, ist das die akzeptierte Antwort? – Josh

+0

Ich konnte nicht das tun, was ich wollte, also habe ich ein SDK von One Signal beendet und es funktioniert für mich. –

0

Was ich getan habe, war ein XMPP-Server mit Ejabbered eingerichtet, um Benachrichtigungen durchzuführen. Hoffe das folgende hilft.

https://firebase.google.com/docs/cloud-messaging/xmpp-server-ref

https://firebase.google.com/docs/cloud-messaging/server#implementing-the-xmpp-connection-server-protocol

+0

Ich habe nicht einmal den geringsten Hinweis darauf, wie ein XMPP-Server eingerichtet wird. Ich habe versucht, ejabbered einzurichten, aber es wird mich nicht einmal authentifizieren lassen. Was hast du benutzt, um dich zu fangen? Ich schaute auf die Unterlagen für die Basis, aber ich wusste nicht, wie ich das tun sollte, was sie sagten –