Zum Hinzufügen von Chat zu einer Android-Anwendung gibt es eine Reihe von Optionen. Ich werde Ihnen die gebotenen Optionen anhand der erforderlichen Entwicklungskompetenz vorstellen - von den wenigsten bis zu den meisten.
einen Echtzeit-Backend-Dienst
Es gibt eine Reihe von Unternehmen, die Dienstleistungen Backend in Echtzeit anbieten. Diese Dienste bieten Ihnen ein SDK, mit dem Ihre App auf ihre Server zugreifen kann. Mit dem SDK können Sie Daten zwischen Geräten streamen. Hier
ist eine Liste der beliebtesten Dienste:
Firebase
Google im Besitz Echtzeit-Datenbank, die WebSockets und MongoDB verwendet als es Core-Technologie-Stack ist. Mit diesem Dienst können Sie Daten in einer No-SQL-Datenbank speichern und sich dann registrieren, um bei Änderungen dieser Daten Aktualisierungen in Echtzeit zu erhalten. Sie bieten auch Dienste für Push-Benachrichtigungen und Dateispeicher an. Es gibt auch ein Open-Source-Framework (MIT-Lizenz) von Drittanbietern, das für iOS und Android verfügbar ist.
Firebase verfügt über eine Bibliothek namens GeoFire, mit der Sie den Standort Ihrer Apps bekannt machen können.
Pusher/PubNub
Ich habe diese zusammen gruppiert, weil sie sehr ähnlich sind. Sie bieten Echtzeit-Streaming-Infrastruktur und -Technologie. Sie können Kanäle zwischen Gerätegruppen einrichten und Daten zwischen ihnen übertragen. Sie bieten keine Möglichkeit zur Authentifizierung von Benutzern, sodass Sie einen Anwendungsserver benötigen.
Quickblox
Quickblox ist speziell auf dem Instant-Messaging-Markt ausgerichtet und sie verwenden, um einen XMPP-Server auf dem Backend. Da sie XMPP verwenden, verfügt dieser Dienst über zahlreiche integrierte Messaging-Funktionen wie Datenschutzlisten und Eingabe-Indikatoren. Sie bieten eine sinnvolle, aber grundlegende Messaging-App.
Layer
Schicht ist auf halbem Weg zwischen Quickblox und PubNub/Pusher. Sie bieten eine Streaming-Plattform, die auf Instant Messaging ausgerichtet ist. Sie haben einige Messaging-Funktionen wie grundlegende Blockierung, aber dies ist keine vollständige Messaging-Implementierung wie Quickblox. Sie haben eine Bibliothek von UI-Komponenten, mit denen Sie eine vollständige App erstellen können - Atlas.
Wenn Sie ein Backend als Dienst verwenden, müssen Sie den Chat-Client immer selbst erstellen. Wenn Sie eine der allgemeineren Optionen wie Firebase verwenden, müssen Sie auch Ihr eigenes Messaging-Protokoll erstellen.
Diese Dienste sparen Ihnen Zeit bei der Echtzeitserverimplementierung, Serverkonfiguration und Skalierung.
XMPP
Eine weitere Option ist Sie sich ein XMPP-Server zu hosten. Es gibt eine Reihe von Open-Source-XMPP-Servern zur Verfügung: aus der Box
XMPP-Server werden Sie mit einer großen Menge von Messaging-Funktionalität bereitstellen. Sie enthalten im Allgemeinen keine Standorterkennung. Dies könnte jedoch dadurch gelöst werden, dass der Server so konfiguriert wird, dass er die Benutzerdatenbank auf einem separaten Server hostet. Auf diese Weise können Sie zusätzliche Tabellen zur Verarbeitung der Geolokation hinzufügen. Eine Alternative wäre die Verwendung der Anwesenheit, um relevante Geräte zu aktualisieren, wenn sich der Standort eines Benutzers um einen bestimmten Betrag ändert.
Um den Client zu erstellen, würde ich empfehlen, Smack zu verwenden. Da XMPP ein offener Standard ist, sollte Ihr Client in der Lage sein, mit XMPP-Servern und -Clients von Drittanbietern zu arbeiten.
Wenn Sie den Client nicht selbst erstellen möchten, gibt es eine Reihe von Open-Source-Projekten (meist unter der linken Kopie der Lizenzen), die als Ausgangspunkt dienen könnten. Xabber wäre ein Beispiel, aber Sie können mehr durch Suchen finden.
Aufbau der Server selbst
Die letzte Option ist der Messaging-Server selbst zu bauen. Dies hat den Vorteil, dass Sie die benötigten Funktionen hinzufügen und relativ einfach halten können. Ein guter Ansatz wäre, Symfony und das Bundle für das Echtzeit-Back-End und Android WebSockets für den Client zu verwenden. Mit diesem Ansatz hätten Sie viel Flexibilität beim Implementieren der Geo-Location-Funktionalität.
Keine Chat-Anwendung, aber vielleicht ein SDK, das helfen kann Scringo (scringo.com) – Kalisky