358 Stimmen

Unterstützt Android Push-Benachrichtigungen nahezu in Echtzeit?

Kürzlich habe ich erfahren, dass iPhone-Apps nahezu sofortige Daten empfangen können. Benachrichtigungen an Anwendungen Benachrichtigungen an Anwendungen .

Dies geschieht 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 Benachrichtigungen anzeigt. unglaublich schnell, zwischen 0,5 und 5 Sekunden vom Senden der Server-App zur Antwortzeit der Telefon-App. Dies wird als Daten - und nicht als SMS - in sehr kleinen Paketen gesendet, die als Teil des Datentarifs und nicht als eingehende Nachrichten berechnet werden.

Ich würde gerne wissen, ob es unter Android entweder eine ähnliche Funktion gibt oder ob es möglich ist, etwas Ähnliches mit Android-APIs zu implementieren. Um zu klären, definiere ich ähnlich als:

  • Keine SMS-Nachricht, sondern eine datengesteuerte Lösung
  • So zeitnah wie möglich
  • ist skalierbar, d. h. als Serverteil einer mobilen Anwendung könnte ich innerhalb von Sekunden Tausende von Anwendungsinstanzen benachrichtigen

Ich weiß, dass die App auch Pull-basiert sein könnte, im Stil von HTTP-Anfragen und -Antworten, aber im Idealfall möchte ich nicht so viele Daten abfragen, nur um zu prüfen, ob eine Benachrichtigung vorliegt; abgesehen davon, dass das wie ein Tropfen auf den heißen Stein ist.

221voto

j pimmel Punkte 11593

Firebase Cloud Messaging FCM-FAQ ist die neue Version von GCM. Sie erbt die Kerninfrastruktur von GCM, um Nachrichten zuverlässig auf Android, iOS und Chrome zuzustellen. Sie werden jedoch weiterhin GCM unterstützen, da viele Entwickler heute GCM-SDKs verwenden, um Benachrichtigungen zu verarbeiten, und die Aktualisierung von Client-Apps Zeit braucht.

Stand: 26. Juni 2012, Google Cloud Messaging ist die bevorzugte Methode zum Senden von Nachrichten an Anwendungen, die auf Geräten laufen.

Zuvor (und jetzt veraltet) hieß der Dienst Cloud To Device Messaging .

51voto

flesh Punkte 23365

XMPP ist eine gute Lösung. Ich habe es für eine Push-fähige Echtzeit-Android-Anwendung verwendet. XMPP ist leistungsstark, stark erweiterbar und einfach zu integrieren und zu verwenden.

Es gibt jede Menge kostenloser XMPP-Server (die Sie allerdings aus Höflichkeit nicht missbrauchen sollten), und es gibt Open-Source-Server, die Sie auf einem Ihrer eigenen Rechner betreiben können. OpenFire ist eine ausgezeichnete Wahl.

Die Bibliothek, die Sie suchen, ist nicht Smack wie oben erwähnt, ist es aSmack . Beachten Sie jedoch, dass es sich um eine Build-Umgebung handelt - Sie müssen die Bibliothek erstellen.

Dies ist eine Berechnung, die ich zu den Auswirkungen einer XMPP-Lösung auf die Akkulaufzeit durchgeführt habe:

Der Android-Client muss eine dauerhafte TCP-Verbindung aufrechterhalten um einen Heartbeat an den XMPP-Server zu senden.
Dies verursacht natürlich Kosten in Bezug auf den Stromverbrauch. Eine Schätzung dieser Kosten ist unten angegeben:

  • Verwendung eines 1400-mAh-Akkus (wie im Nexus One und HTC Desire enthalten)
  • Ein im Leerlauf mit einem 3G-Netz verbundenes Gerät verbraucht etwa 5 mA
  • Der Zyklus aus Aufwachen, Herzschlag und Schlaf findet alle 5 Minuten statt und dauert drei Sekunden. und verbraucht 300 mA.
  • Die Kosten für die Batterienutzung pro Stunde betragen t
    • 36 Sekunden 300mA = 3mAh Herzschlag senden
    • 3600 Sekunden 5mA = 5mAh im Leerlauf
    • 4:95 + 3 = 7:95mAh kombiniert
  • Ein 1400-mAh-Akku hält im Leerlauf etwa 11,6 Tage und 7,3 Tage bei Anwendung, was einer ungefähren Verringerung der Batteriekapazität um 37 % entspricht. Lebensdauer der Batterie.
  • Eine Verkürzung der Batterielebensdauer um 37 % stellt jedoch den absolut schlimmsten Fall dar in der Praxis den absoluten Extremfall dar, da die Geräte selten vollständig im Leerlauf sind.

34voto

dalelane Punkte 2736

Ich habe vor kurzem angefangen, mit MQTT zu spielen http://mqtt.org für Android als eine Möglichkeit, das zu tun, was Sie wollen (d. h. keine SMS, sondern datengesteuert, fast sofortige Nachrichtenzustellung, skalierbar, keine Abfrage usw.)

Ich habe einen Blogbeitrag mit Hintergrundinformationen zu diesem Thema verfasst, falls dies hilfreich ist http://dalelane.co.uk/blog/?p=938

(Anmerkung: MQTT ist eine IBM-Technologie, und ich sollte darauf hinweisen, dass ich für IBM arbeite).

14voto

peter Punkte 269

Werfen Sie einen Blick auf die Xtify Plattform. Es sieht so aus, als würden sie genau das tun,

8voto

jamesh Punkte 19377

Wenn Sie sich darauf verlassen können, dass die Google-Bibliotheken für Ihren Zielmarkt zur Verfügung stehen, dann sollten Sie vielleicht Huckepack auf GTalk Funktionalität (Registrierung einer Ressource auf dem bestehenden Benutzernamen - das Abfangen der Nachrichten, wenn sie mit einem BroadcastReceiver eintreffen).

Wenn nicht, und ich erwarte Sie können nicht dann sind Sie in Bündelung Ihrer eigenen XMPP-Versionen . Dies ist mühsam, kann aber einfacher werden, wenn XMPP separat als eigenständige Bibliothek gebündelt wird.

Sie können auch Folgendes in Betracht ziehen PubSubHub , aber ich habe keine Ahnung, wie das Netzwerk genutzt wird. Ich glaube, es ist auf XMPP aufgebaut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X