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.

8voto

Morgan Christiansson Punkte 28762

Ich habe mir das angeschaut und das von jamesh empfohlene PubSubHubBub ist keine Option. PubSubHubBub ist für die Server-zu-Server-Kommunikation gedacht

"Ich bin hinter einer NAT. Kann ich mich bei einem Hub anmelden? Der Hub kann sich nicht mit mir verbinden."

/Anonym

N Protokoll. Wenn Sie hinter NAT sind, sind Sie nicht wirklich ein Server. Wir haben zwar Ideen für optionale PSHB Erweiterungen zur Durchführung von Hanging Gets ("Long Polling") und/oder Messagebox-Polling für solche Clients zu ermöglichen, ist dies nicht in der Kern Spezifikation. Die Kernspezifikation ist nur von Server zu Server.

/Brad Fitzpatrick, San Francisco, CA

Quelle: http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d (direkter Link nicht möglich)

Ich bin zu dem Schluss gekommen, dass die einfachste Methode die Verwendung von Comet HTTP Push ist. Dies ist eine einfache und gut verständliche Lösung, die auch für Webanwendungen wiederverwendet werden kann.

8voto

mtbkrdave Punkte 2710

Es gibt eine neue Open-Source-Bemühung zur Entwicklung einer Java-Bibliothek für Push-Benachrichtigungen auf Android, die den Meteor Comet Server als Backend nutzt. Sie können sie unter das Diakonenprojekt-Blog . Wir brauchen Entwickler, also bitte weitersagen!

8voto

Freek Nortier Punkte 750

Google kürzlich(18Mai2016) angekündigt dass Firebase ist jetzt eine einheitliche Plattform für Entwickler von mobilen Geräten, die Push-Benachrichtigungen fast in Echtzeit liefert und auch plattformübergreifend ist:

Das Unternehmen bietet jetzt allen Firebase-Nutzern kostenlose und unbegrenzte Benachrichtigungen mit Unterstützung für iOS, Android und das Web.

Quelle

6voto

Will Punkte 18909

Ich weiß nicht mehr, wo ich es gelesen habe, aber ich glaube, dass Google Mail eine offene TCP-Verbindung für den E-Mail-Push verwendet.

6voto

MrSnowflake Punkte 4644

Als GTalk aus dem SDK verschwunden ist, könnte es eine gute Idee sein, ein "Standard"-Push-Messaging-System zu entwickeln. Auf diese Weise muss nur ein Dienst laufen, und es muss nur eine zusätzliche TCP-Verbindung geöffnet sein. Anwendungen sollten mit diesem Dienst sprechen, indem sie Intents und sollte zunächst die Erlaubnis zum Senden und Empfangen von Mitteilungen des Dienstes beantragen. Der Dienst sollte dann dem Benutzer mitteilen, dass eine neue Anwendung Nachrichten senden und empfangen möchte. Der Nutzer erteilt oder verweigert dann die Erlaubnis, so dass er die Kontrolle behält. Die Anwendung registriert dann eine Aktion und eine Kategorie beim Dienst, damit dieser weiß, wie er die Push-Nachricht zustellen soll.

Ist das eine gute Idee oder nicht?

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