Nach dem Durchsuchen der Dokumente konnte ich keine Informationen darüber finden, wie Geräte-zu-Geräte-Nachrichten mit FCM ohne Verwendung eines externen Servers gesendet werden können.
Wenn ich beispielsweise eine Chat-Anwendung erstellen würde, müsste ich Push-Benachrichtigungen an Benutzer über ungelesene Nachrichten senden, da diese nicht immer online sind und ich keinen dauerhaften Dienst im Hintergrund habe, mit dem immer eine Verbindung besteht die Echtzeitdatenbank, weil das zu ressourcenintensiv wäre.
Wie würde ich eine Push-Benachrichtigung an einen Benutzer "A" senden, wenn ein bestimmter Benutzer "B" ihm eine Chat-Nachricht sendet? Benötige ich dafür einen externen Server oder kann dies nur mit Firebase-Servern durchgeführt werden?
Antworten:
UPDATE: Es ist jetzt möglich, Firebase-Cloud-Funktionen als Server für die Verarbeitung von Push-Benachrichtigungen zu verwenden. Überprüfen Sie ihre Dokumentation hier
============
Gemäß den Dokumenten müssen Sie einen Server für die Verarbeitung von Push-Benachrichtigungen in der Kommunikation von Gerät zu Gerät implementieren.
Wenn Sie nur grundlegende Benachrichtigungen vom Server an Ihre Benutzer senden müssen. Sie können die serverlose Lösung Firebase Notifications verwenden .
Hier finden Sie einen Vergleich zwischen FCM- und Firebase-Benachrichtigungen: https://firebase.google.com/support/faq/#messaging-difference
quelle
Es hat mir geholfen, eine HTTP-POST-Anfrage mit dem Link https://fcm.googleapis.com/fcm/send mit dem erforderlichen Header und den erforderlichen Daten zu stellen. Im folgenden Code-Snippet
Constants.LEGACY_SERVER_KEY
handelt es sich um eine lokale Klassenvariable. Sie finden diese in Ihrem Firebase-ProjektSettings->Cloud Messaging->Legacy Server key
. Sie müssen das Geräteregistrierungstoken übergeben, dhregToken
in dem Code-Snippet, auf das HIER verwiesen wird .Endlich benötigen Sie die Abhängigkeit der okhttp- Bibliothek, damit dieses Snippet funktioniert.
Wenn Sie eine Nachricht an ein bestimmtes Thema senden möchten, ersetzen Sie diese
regToken
in jsonund vergessen Sie nicht, die INTERNET-Berechtigung in Ihre AndroidManifest.xml aufzunehmen.
WICHTIG : - Die Verwendung des obigen Codes bedeutet, dass sich Ihr Serverschlüssel in der Clientanwendung befindet. Dies ist gefährlich, da jemand in Ihre Anwendung eindringen und den Serverschlüssel zum Senden böswilliger Benachrichtigungen an Ihre Benutzer erhalten kann.
quelle
Sie können dies mit der Volly Jsonobject-Anfrage tun ....
Befolgen Sie zuerst diese Schritte:
1 Kopieren Sie den Legacy-Serverschlüssel und speichern Sie ihn als Legacy_SERVER_KEY
Sie können im Bild sehen, wie man bekommt
2 Sie benötigen eine Volley-Abhängigkeit
Code zum Senden Push: -
Rufen Sie einfach sendFCMPush () auf .
quelle
1) Abonnieren Sie einen identischen Themennamen, zum Beispiel:
2) Senden Sie Nachrichten innerhalb der Anwendung
GoogleFirebase: So senden Sie Themennachrichten
quelle
Ja, es ist ohne Server möglich. Sie können eine Geräterseite für Gerätegruppen erstellen und anschließend Nachrichten in der Gruppe austauschen. Es gibt jedoch Einschränkungen:
Referenz: Firebase-Dokument Siehe Abschnitt "Verwalten von Gerätegruppen auf Android-Client-Apps".
quelle
Mit den Google Cloud-Funktionen können jetzt Push-Benachrichtigungen von Gerät zu Gerät ohne App-Server gesendet werden. Ich habe eine Cloud-Funktion erstellt, die ausgelöst wird, wenn eine neue Nachricht in die Datenbank aufgenommen wird
Es ist
node.js
Codequelle
Wenn Sie über ein fcm (gcm) -Token des Geräts verfügen, an das Sie eine Benachrichtigung senden möchten. Es ist nur eine Post-Anfrage, um die Benachrichtigung zu senden.
https://github.com/prashanthd/google-services/blob/master/android/gcm/gcmsender/src/main/java/gcm/play/android/samples/com/gcmsender/GcmSender.java
quelle
Mit den Google Cloud-Funktionen können jetzt Push-Benachrichtigungen von Gerät zu Gerät ohne App-Server gesendet werden.
Auf der entsprechenden Seite der Google Cloud-Funktionen:
Hier ist ein Demo-Projekt zum Senden von Push-Benachrichtigungen von Gerät zu Gerät mit Firebase- und Google Cloud-Funktionen.
quelle
In meinem Fall verwende ich die Nachrüstung mit dieser Klasse. Nachricht:
Daten
Benachrichtigung
das ist der Anruf
unser ServiceAPi
quelle
Sie können Retrofit verwenden. Abonnieren Sie Geräte für Themen-News. Senden Sie eine Benachrichtigung von einem Gerät an ein anderes.
POJOs
und
und FirebaseAPI
quelle
Sie können dazu die Firebase-Echtzeitdatenbank verwenden. Sie können eine Datenstruktur zum Speichern von Chats erstellen und Beobachter für die Konversationsthreads für beide Benutzer hinzufügen. Es gibt immer noch eine Geräte-Server-Geräte-Architektur, aber in diesem Fall gibt es keinen zusätzlichen Server seitens der Entwickler. Dies verwendet die Firebase-Server. Sie können sich hier ein Tutorial ansehen (ignorieren Sie den UI-Teil, dies ist jedoch auch ein guter Ausgangspunkt für Chat-UI-Frameworks).
Firebase Echtzeit-Chat
quelle
Also hatte ich hier eine Idee. Siehe: Wenn sowohl der FCM als auch der GCM eine Endpoit-to-http-Anforderung haben, bei der wir einen Post-JSON mit unseren Nachrichtendaten senden können, einschließlich der Token der Geräte, auf denen diese Nachricht zugestellt werden soll.
Warum also nicht einen Beitrag mit dieser Benachrichtigung an den Firebase-Server senden, um ihn an Benutzer B zu senden? Du verstehst ?
Sie senden also die Nachricht und chatten mit einem Anrufbeitrag, um die Zustellung der Benachrichtigung sicherzustellen, wenn sich der Benutzer mit Ihrer App im Hintergrund befindet. Ich brauche es auch bald, ich werde es später testen. Was sagst du dazu?
quelle
Einfachster Weg:
Klasse erstellen, um ein Objekt zu erstellen:
Klasse erstellen, um ein Objekt zu erstellen:
quelle