© Excellent backgrounds/Shutterstock.com
Google Cloud Messaging Service

Message in a Bottle


Die Situation, dass eine mobile App mit einem Server kommuniziert, kommt in der Praxis recht häufig vor. Normalerweise wird die Kommunikation dabei vom Client (also der App) initiiert. Abgesehen von ein paar kleinen Stolpersteinen, etwa einer nicht vorhandenen Netzwerkverbindung, ist eine solche Kommunikation mit An­droid recht leicht zu realisieren. Spannender gestaltet es sich, wenn die Kommunikation vom Server gestartet werden soll. Die Situationen, die es hier zu beachten gilt, sind deutlich vielfältiger: Ist das Handy gerade online? Ist es vielleicht gar nicht zu erreichen, weil es keine Netzwerkverbindung hat oder komplett ausgeschaltet ist? Ist es im Schlafmodus und wenn ja, soll die Nachricht auch im Schlafmodus zugestellt werden? Wenn das Handy sie erhält, soll es direkt aufwachen oder erst reagieren, wenn der User es aufweckt? Wenn das Handy nicht erreichbar ist, soll das Zustellen der Nachricht wiederholt werden?

Selbst eine Serverinfrastruktur, die mit all diesen Situationen umgehen kann, ist umfangreich und teilweise unmöglich umzusetzen – man denke an das Zustellen von Nachrichten an schlafende Handys. Hier schafft der Google Cloud Messaging Service Abhilfe.

Der Google Cloud Messaging Service [1] (GCM) ist der Nachfolger des Mitte 2012 eingestellten Diensts „Android Cloud to Device Messaging Framework“ [2]. Er ermöglicht es, Nachrichten vom eigenen Server auf Android-Devices zu schicken. Der eigene Server schickt dabei eine Nachricht an den Google-Cloud-Messaging-Server, der diese an das Device weiterleitet. Der Vorteil dieses Umwegs ist, dass der Google-Cloud-Messaging-Server Nachrichten auch vorhalten kann, falls der Client gerade nicht erreichbar ist, und dass er Geräte auch dann erreichen kann, wenn sie sich gerade im Stand-by-Modus befinden. Je nach Implementierung des Clients kann das Gerät dann aufgeweckt werden oder die Nachricht vorhalten, bis der Benutzer es aktiv aufweckt. Technisch geschieht dies dadurch, dass der Android-Client bei einer eingehenden Nachricht ein Broadcast-Event schickt. Die zugehörige App kann dann programmatisch entscheiden, ob sie das Gerät aufweckt oder die Nachricht nur zur späteren Verwendung speichert.

Beim Versenden einer Nachricht kann der Sender (also i. d. R. der eigene Server) entscheiden, wie der Google Cloud Messaging Service mit der Situation umgehen soll, dass der Client gerade nicht verfügbar ist. Soll die Nachricht vorgehalten werden, bis sich der Client wieder meldet? Wie soll verfahren werde...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang