Viele Anwendungen wie WhatsApp
verlassen sich auf GCM
, um Benachrichtigungen an das Gerät zu senden, wenn das Gerät im Leerlauf ist oder die App im Hintergrund ausgeführt wird. Die Nachricht GCM
teilt der App lediglich mit, dass sie vom Server synchronisiert wird, und dann wird XMPP
verwendet, um den eigentlichen Chat auszuführen (die Payload wird bereitgestellt). Aber ist es eine gute Entscheidung, sich auf GCM
zu verlassen, um Nachrichten zu senden. Also in meinem Fall, wenn ein Benutzer mit einem anderen sprechen möchte, sendet er meinem Server eine Nachricht und dann übertrage ich die Nachricht an den anderen Benutzer über GCM
. Ich verstehe GCM
ist nicht 100% zuverlässig, aber ich kann Zuverlässigkeit durch Timeouts und Bestätigungsmeldungen sicherstellen. Gibt es noch etwas, das mich verletzen könnte, wenn ich komplett mit GCM
gehe. Der Grund dafür, dass wir nicht mit XMPP
gehen, ist, dass es sehr viel Mühe kosten wird, einen XMPP
Server zu skalieren (mit dem ich nicht vertraut bin), aber im Fall von GCM
werden viele meiner Skalierungsprobleme von Google erledigt.Ist es gut, nur GCM für die Entwicklung von Chat-Anwendungen für Android XMPP zu verwenden?
Antwort
Ich verwende GCM, um den Client auf eine Verbindung hinzuweisen. Wenn Sie sich nur auf GCM verlassen, um die Payload auszuliefern, können Sie die Zustellung von Nachrichten nicht so einfach verfolgen.
Zum Beispiel verwende ich eine sehr einfache Form der Stream-Verwaltung in meiner App, so dass ich es lieber auf ein Synchronisierungs-Dienstprogramm nur halten und meinen Client/Server direkt kommunizieren lassen.
Es ist auch nicht erweiterbar, obwohl Sie wahrscheinlich die XML in den Nachrichtentext legen und das analysieren könnte.
Ich bin nicht sicher, was die Garantie auf Lieferung ist, aber ich würde auch auf der Google-Seite überprüfen, und wenn Sie es verwenden, um mehrere Nachrichten zu liefern, müssen Sie sicherstellen, dass Sie die collapse_key
Funktion in Ihre integrieren Client, weil GCM Ihre Nachrichten in einem konsolidiert, wenn es eine Verzögerung beim Senden gibt, wenn Sie ein hohes Volumen verwenden.
Eine andere Sache bin ich nicht sicher über die Echtheit von GCM, also bin ich mir nicht sicher, wie toll es für eine echte Chat-ähnliche Anwendung wäre.
Ich würde diese Dinge vor der Verwendung von GCM für die Nutzlast Lieferung betrachten.
kann ich jabber server in android verwenden i m new bee? –
Diese Nachricht/Antwort ist eine Weile her, aber ich denke, die Nachricht in den Push zu übergeben, und wenn die Nachricht in die App geschoben wird, ein Ajax oder ein Formular auslösen, um den Server zu bestätigen, der empfangen wurde, aber ich Ich frage mich nur, ob es eine Möglichkeit gibt, dass die Internetverbindungen "mitten in der Weitergabe der Daten" in der Mitte von GCM und zwischen dem Ajax und dem Server abstürzen. (In Ihrem Fall GCM erhalten, dann Verbindung stirbt, und wie man damit umgeht, bekommt der Server eine Zeitüberschreitung? Und erneut senden GCM zum Auslösen von verbindet?) – John
@John Jun Aus dem Speicher GCM ist ein Feuer und vergessen, ich bin mir nicht sicher, ob es gibt garantierte Nachrichtenübermittlung –
Abhängig von der Art Ihrer Anwendung, wenn Sie planen, Ihre Anwendung auf dem iPhone, Symbian usw. zu erweitern, klingt das Aufrufen von GCM nicht gut. –
@ChorWaiChun Also ist es gut, wenn Sie es nur android behalten wollen? – lovesh
Ich würde sagen, es ist OK, bisher habe ich noch nie einen GCM von meinem Server erhalten, und in meinem Projekt habe ich auch die ganze Nachricht (xml) in die Payload, mit einer ID zugewiesen, so wenn das Telefon zu verbinden Mein Server, wir können immer noch die Nachrichten verfolgen, die er nicht erhalten hat, in einem seltenen Fall, dass GCM fehlgeschlagen ist. –