Ich habe kürzlich erfahren, wie iPhone-Apps fast sofort Benachrichtigungen an Apps erhalten können. Benachrichtigungen an Apps .
Dies erfolgt in Form von Push-Benachrichtigungen, einem maßgeschneiderten Protokoll, das eine ständige Datenverbindung zum iPhone aufrechterhält und Binärpakete an die App sendet, die unglaublich schnell Warnungen zwischen 0,5 und 5 Sekunden von der Server-App an die Telefon-App senden Reaktionszeit. Dies wird als Daten - und nicht als SMS - in sehr sehr kleinen Paketen gesendet, die als Teil des Datenplans berechnet werden und nicht als eingehende Nachrichten.
Ich würde gerne wissen, ob es unter Android entweder eine ähnliche Funktion gibt oder ob es möglich ist, mithilfe von Android-APIs etwas Ähnliches zu implementieren. Zur Verdeutlichung definiere ich ähnlich wie:
- Keine SMS-Nachricht, sondern eine datengesteuerte Lösung
- So in Echtzeit wie möglich
- Ist skalierbar, dh als Serverteil einer mobilen App könnte ich Tausende von App-Instanzen in Sekunden benachrichtigen
Ich schätze, dass die App einen Pull-basierten HTTP-Anforderungs- / Antwortstil haben könnte, aber im Idealfall möchte ich nicht so stark abfragen, nur um nach Benachrichtigungen zu suchen. Außerdem ist es so, als würde der Datenplan durch Tropfen abgelassen.
quelle
Antworten:
Firebase Cloud Messaging FCM FAQ ist die neue Version von GCM. Es erbt die Kerninfrastruktur von GCM, um Nachrichten zuverlässig auf Android, iOS und Chrome zu übermitteln. Sie werden GCM jedoch weiterhin unterstützen, da viele Entwickler heute GCM-SDKs verwenden, um Benachrichtigungen zu verarbeiten, und das Upgrade der Client-App einige Zeit in Anspruch nimmt.
Ab dem 26. Juni 2012 ist Google Cloud Messaging die bevorzugte Methode zum Senden von Nachrichten an Anwendungen, die auf Geräten ausgeführt werden.
Früher (und jetzt veraltet) hieß der Dienst Cloud To Device Messaging .
quelle
XMPP ist eine gute Lösung. Ich habe es für eine Push-fähige Echtzeit-Android-Anwendung verwendet. XMPP ist leistungsstark, sehr erweiterbar und einfach zu integrieren und zu verwenden.
Es gibt viele kostenlose XMPP-Server (obwohl Sie sie aus Höflichkeit nicht missbrauchen sollten) und es gibt Open Source-Server, die Sie auf einer Ihrer eigenen Boxen ausführen können. OpenFire ist eine ausgezeichnete Wahl.
Die Bibliothek, die Sie wollen, ist nicht Smack, wie oben erwähnt, es ist aSmack . Beachten Sie jedoch, dass dies eine Build-Umgebung ist. Sie müssen die Bibliothek erstellen.
Dies ist eine Berechnung, die ich für die Auswirkungen einer XMPP-Lösung auf die Akkulaufzeit durchgeführt habe:
quelle
Ich habe vor kurzem angefangen, mit MQTT http://mqtt.org für Android zu spielen, um das zu tun, wonach Sie fragen (dh nicht SMS, sondern datengesteuert, fast sofortige Nachrichtenübermittlung, skalierbar, nicht abrufbar usw.).
Ich habe einen Blog-Beitrag mit Hintergrundinformationen zu diesem Fall, falls dieser hilfreich ist: http://dalelane.co.uk/blog/?p=938
(Hinweis: MQTT ist eine IBM Technologie, und ich sollte darauf hinweisen, dass ich für IBM arbeite.)
quelle
Schauen Sie sich die Xtify- Plattform an. Sieht so aus, als ob sie das tun,
quelle
Google wertet C2DM ab, aber an seiner Stelle, mit der Einführung von GCM (Google Cloud Messaging), glaube ich nicht, dass es eine Quote gibt und diese kostenlos ist! Es erfordert jedoch Android 2.2+! http://developer.android.com/guide/google/gcm/index.html
quelle
Wenn Sie sich darauf verlassen können, dass die Google-Bibliotheken für Ihren Zielmarkt verfügbar sind, möchten Sie möglicherweise auf die GTalk- Funktionalität zurückgreifen (Registrieren einer Ressource unter dem vorhandenen Benutzernamen - Abfangen der Nachrichten, wenn diese mit einem BroadcastReceiver eingehen).
Wenn nicht, und ich gehe davon aus, dass Sie dies nicht können , bündeln Sie Ihre eigenen XMPP-Versionen . Dies ist ein Problem, kann jedoch erleichtert werden, wenn XMPP separat als eigenständige Bibliothek gebündelt wird.
Sie können auch PubSubHubub in Betracht ziehen , aber ich habe keine Ahnung, wie das Netzwerk verwendet wird. Ich glaube, es ist auf XMPP aufgebaut.
quelle
Ich habe dies untersucht und PubSubHubBub, empfohlen von Jamesh, ist keine Option. PubSubHubBub ist für die Server-zu-Server-Kommunikation vorgesehen
Ich bin zu dem Schluss gekommen, dass die einfachste Methode die Verwendung von Comet HTTP Push ist. Dies ist sowohl eine einfache als auch gut verstandene Lösung, kann aber auch für Webanwendungen wiederverwendet werden.
quelle
Es gibt eine neue Open-Source-Initiative zur Entwicklung einer Java-Bibliothek für Push-Benachrichtigungen unter Android unter Verwendung des Meteor-Kometenservers als Backend. Sie können es im Deacon Project Blog nachlesen . Wir brauchen Entwickler, also bitte verbreiten Sie das Wort!
quelle
Google hat kürzlich (18. Mai 2016) angekündigt, dass Firebase jetzt eine einheitliche Plattform für mobile Entwickler ist, einschließlich Push-Benachrichtigungen in nahezu Echtzeit. Es ist auch plattformübergreifend:
Quelle
quelle
Ich kann nicht finden, wo ich es gelesen habe, aber ich glaube, dass Google Mail eine offene TCP-Verbindung verwendet, um den E-Mail-Push durchzuführen.
quelle
Wie
GTalk
aus dem SDK hervorgeht, ist es möglicherweise eine gute Idee, ein Standard-Push-Messaging-System zu erstellen. Auf diese Weise muss nur ein Dienst ausgeführt werden, es muss nur eine zusätzliche TCP-Verbindung geöffnet sein. Anwendungen sollten mit diesem Dienst über kommunizierenIntents
und zunächst die Erlaubnis zum Senden und Empfangen von Benachrichtigungen vom Dienst anfordern. Der Dienst sollte dann den Benutzer benachrichtigen, wenn eine neue Anwendung Nachrichten senden und empfangen möchte. Der Benutzer erteilt oder verweigert dann die Berechtigung, sodass er die Kontrolle behält. Die Anwendung registriert dann eine Aktion + Kategorie für den Dienst, sodass der Dienst weiß, wie die Push-Nachricht zugestellt wird.Wäre das eine gute Idee oder nicht?
quelle
Warum entscheiden Sie sich nicht für die XMPP-Implementierung? Derzeit sind so viele öffentliche Server verfügbar, einschließlich gtalk, jabber, citadel usw. Für Android gibt es ein SDK mit dem Namen SMACK. Dies kann man nicht als Push-Benachrichtigung bezeichnen, aber mit XMPP können Sie eine Verbindung zwischen Client und Server offen halten, die eine bidirektionale Kommunikation ermöglicht. Bedeutet, dass sowohl Android-Client als auch -Server miteinander kommunizieren können. Derzeit wird dies die Notwendigkeit von Push in Android erfüllen. Ich habe einen Beispielcode implementiert und er funktioniert wirklich gut
quelle
Ich habe vor kurzem http://pushdroid.org entwickelt. Es ist eine einzelne Anwendung, die auf dem Telefon installiert werden sollte, genau wie Google sie in 2.2 implementiert hat. Dies funktioniert ab 1.5 und sendet absichtlich.
quelle
Das Problem mit GCM ist, dass der Prozess viele Konfigurationen umfasst:
Wenn Sie einfache Dinge mögen (wie ich), sollten Sie UrbanAirship ausprobieren . Dies ist (IMHO) der einfachste Weg, GCM in Ihrer App zu verwenden, ohne viel Konfiguration vorzunehmen. Außerdem erhalten Sie eine hübsche Benutzeroberfläche, mit der Sie testen können, ob Ihre GCM-Nachrichten korrekt zugestellt werden.
Hinweis: Ich bin in keiner Weise mit UrbanAirship verbunden
quelle
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Es ist wirklich eine gute und funktionierende Lösung für Push.
Versuch es bitte
quelle
Sie haben ihre Listener, die von Ihnen verwendet werden müssen, indem sie ihre Bibliotheksklassen in Ihrem Code verwenden. Sie müssen sich nicht um das Schieben kümmern. Sie müssen die Nachricht an den Server senden. Der Server sendet die Nachricht an das Gerät. Sie benutzen OAuth. In Bezug auf Protokolle gibt es zwei Methoden, die CCS und XMPP verwenden. CCS verwendet XMPP nur als authentifizierte Transportschicht, sodass Sie die meisten XMPP-Bibliotheken zum Verwalten der Verbindung verwenden können. Um Benachrichtigungen an das Gerät zu senden, können Sie Code in die zu sendende Android-App sowie Ihren Servercode schreiben. Das Senden der Nachricht erfolgt nur über Ihren Code. Der Rest wird von Google Server im GCM-Fall erledigt. Sie können Details unter diesem Link überprüfen
http://developer.android.com/google/gcm/server.html
Auch für Sicherheitsprobleme
Google Cloud Messaging-Sicherheit https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
Wenn Ihre App nicht ausgeführt wird, können auch Geräte Benachrichtigungen erhalten, da Sie Code für Broadcast-Listener schreiben müssen. Im Hintergrund hört es den Server ab und erhält jedes Mal, wenn ein Nachrichtenpaket vorhanden ist, die Nachricht als Benachrichtigung. Android hat einen Dienst, den Sie brauchen, um sich nicht darum zu kümmern. Sie müssen diese Ressourcen nur mithilfe der Bibliotheksklasse verwenden, die Ihnen die Arbeit erleichtert, und sie schreiben lassen, wenn Ihre App nicht ausgeführt wird. Außerdem wird eine Benachrichtigung empfangen. Offensichtlich würde es einen Hörer geben, der die App zum Empfangen bringt. Überprüfen Sie den Abschnitt "Nachricht empfangen" in diesem Link
http://developer.android.com/google/gcm/client.html
Es werden auch Anfragen von Benutzern akzeptiert. Für GCM reicht es aus. Bitte aktivieren Sie "Nachricht senden"
http://developer.android.com/google/gcm/client.html
quelle