Google Cloud Messaging
Warnung
Google hat GCM ab dem 10. April 2018 als veraltet gekennzeichnet. Die folgenden Dokumente und Beispielprojekte werden möglicherweise nicht mehr verwaltet. Der GCM-Server und die Client-APIs von Google werden bereits am 29. Mai 2019 entfernt. Google empfiehlt die Migration von GCM-Apps zu Firebase Cloud Messaging (FCM). Weitere Informationen zur Veraltetkeit und Migration von GCM finden Sie unter Google Veraltetes Cloud-Messaging.
Informationen zum Verwenden von Firebase Cloud Messaging mit Xamarin finden Sie unter Firebase Cloud Messaging.
Google Cloud Messaging (GCM) ist ein Dienst, der das Messaging zwischen mobilen Apps und Serveranwendungen erleichtert. Dieser Artikel bietet eine Übersicht über die Funktionsweise von GCM und erläutert, wie Sie Google Services konfigurieren, damit Ihre App GCM verwenden kann.
Dieses Thema bietet eine allgemeine Übersicht darüber, wie Google Cloud Messaging Nachrichten zwischen Ihrer App und einem App-Server weitergibt, und bietet eine schrittweise Vorgehensweise zum Abrufen von Anmeldeinformationen, damit Ihre App GCM-Dienste verwenden kann.
Übersicht
Google Cloud Messaging (GCM) ist ein Dienst, der das Senden, Weiterleiten und Warteschleifen von Nachrichten zwischen Serveranwendungen und mobilen Client-Apps übernimmt. Eine Client-App ist eine GCM-fähige App, die auf einem Gerät ausgeführt wird. Der App-Server (von Ihnen oder Ihrem Unternehmen bereitgestellt) ist der GCM-fähige Server, mit dem Ihre Client-App über GCM kommuniziert:
Mithilfe von GCM können App-Server Nachrichten an ein einzelnes Gerät, eine Gruppe von Geräten oder eine Reihe von Geräten senden, die ein Thema abonniert haben. Ihre Client-App kann GCM verwenden, um nachgeschaltete Nachrichten von einem App-Server zu abonnieren (z. B. zum Empfangen von Remotebenachrichtigungen). Darüber hinaus ermöglicht GCM es Client-Apps, Upstream Nachrichten zurück an den App-Server zu senden.
Google Cloud Messaging in Aktion
Wenn Downstreamnachrichten von einem App-Server an eine Client-App gesendet werden, sendet der App-Server die Nachricht an einen GCM-Verbindungsserver. Der GCM-Verbindungsserver leitet die Nachricht wiederum an ein Gerät weiter, auf dem Ihre Client-App ausgeführt wird. Nachrichten können über HTTP oder XMPP (erweiterbares Messaging- und Anwesenheitsprotokoll) gesendet werden. Da Client-Apps nicht immer verbunden sind oder ausgeführt werden, stellt der GCM-Verbindungsserver Nachrichten in die Warteschlange und speichert sie, und sendet sie an Client-Apps, wenn sie wieder eine Verbindung herstellen und verfügbar werden. Ebenso wird GCM Upstream Nachrichten von der Client-App an den App-Server in die Warteschlange stellen, wenn der App-Server nicht verfügbar ist.
GCM verwendet die folgenden Anmeldeinformationen, um den App-Server und Ihre Client-App zu identifizieren, und verwendet diese Anmeldeinformationen, um Nachrichtentransaktionen über GCM zu autorisieren:
API-Schlüssel : Der API-Schlüssel gewährt Ihrem App-Server Zugriff auf Google-Dienste. GCM verwendet diesen Schlüssel, um Ihren App-Server zu authentifizieren. Bevor Sie den GCM-Dienst verwenden können, müssen Sie zunächst einen API-Schlüssel aus der Google Developer Console abrufen, indem Sie ein Projekt erstellen. Der API-Schlüssel sollte geschützt bleiben. Weitere Informationen zum Schutz Ihres API-Schlüssels finden Sie unter Bewährte Methoden für die sichere Verwendung von API-Schlüsseln.
Absender-ID : Die Absender-ID autorisiert den App-Server für Ihre Client-App. Dabei handelt es sich um eine eindeutige Nummer, die den App-Server identifiziert, der Nachrichten an Ihre Client-App senden darf. Die Absender-ID ist auch Ihre Projektnummer; Sie erhalten die Absender-ID aus der Google Developers Console, wenn Sie Ihr Projekt registrieren.
Registrierungstoken : Das Registrierungstoken ist die GCM-Identität Ihrer Client-App auf einem bestimmten Gerät. Das Registrierungstoken wird zur Laufzeit generiert. Ihre App empfängt ein Registrierungstoken, wenn sie sich zum ersten Mal bei GCM registriert, während sie auf einem Gerät ausgeführt wird. Das Registrierungstoken autorisiert eine instance Ihrer Client-App (die auf diesem bestimmten Gerät ausgeführt wird) zum Empfangen von Nachrichten von GCM.
Anwendungs-ID : Die Identität Ihrer Client-App (unabhängig von einem bestimmten Gerät), die sich für den Empfang von Nachrichten von GCM registriert. Unter Android ist die Anwendungs-ID der Paketname, der in AndroidManifest.xmlaufgezeichnet wird, z
com.xamarin.gcmexample
. B. .
Das Einrichten von Google Cloud Messaging (weiter unten in diesem Leitfaden) enthält detaillierte Anweisungen zum Erstellen eines Projekts und zum Generieren dieser Anmeldeinformationen.
In den folgenden Abschnitten wird erläutert, wie diese Anmeldeinformationen verwendet werden, wenn Client-Apps über GCM mit App-Servern kommunizieren.
Registrierung bei GCM
Eine clientseitige App, die auf einem Gerät installiert ist, muss sich zuerst bei GCM registrieren, bevor das Messaging erfolgen kann. Die Client-App muss die im folgenden Diagramm gezeigten Registrierungsschritte ausführen:
Die Client-App kontaktiert GCM, um ein Registrierungstoken zu erhalten, und übergibt die Absender-ID an GCM.
GCM gibt ein Registrierungstoken an die Client-App zurück.
Die Client-App leitet das Registrierungstoken an den App-Server weiter.
Der App-Server speichert das Registrierungstoken für die nachfolgende Kommunikation mit der Client-App zwischen. Optional kann der App-Server eine Bestätigung zurück an die Client-App senden, um anzugeben, dass das Registrierungstoken empfangen wurde. Nachdem dieser Handshake erfolgt ist, kann die Client-App Nachrichten vom App-Server empfangen (oder an diesen senden).
Wenn die Client-App keine Nachrichten mehr vom App-Server empfangen möchte, kann sie eine Anforderung an den App-Server senden, um das Registrierungstoken zu löschen. Wenn die Client-App Themennachrichten empfängt (weiter unten in diesem Artikel erläutert), kann sie das Thema abbestellen. Wenn die Client-App von einem Gerät deinstalliert wird, erkennt GCM dies und benachrichtigt den App-Server automatisch, das Registrierungstoken zu löschen.
Downstreammessaging
Wenn der App-Server eine Downstreamnachricht an die Client-App sendet, werden die schritte im folgenden Diagramm veranschaulicht:
Der App-Server sendet die Nachricht an GCM.
Wenn das Clientgerät nicht verfügbar ist, speichert der GCM-Server die Nachricht zur späteren Übertragung in einer Warteschlange.
Wenn das Clientgerät verfügbar ist, sendet GCM die Nachricht an die Client-App auf diesem Gerät.
Die Client-App empfängt die Nachricht von GCM und verarbeitet sie entsprechend. Wenn die Nachricht beispielsweise eine Remotebenachrichtigung ist, wird sie dem Benutzer angezeigt.
In diesem Messagingszenario (in dem der App-Server eine Nachricht an eine einzelne Client-App sendet) können Nachrichten bis zu 4kB lang sein.
Ausführliche Informationen (einschließlich Codebeispielen) zum Empfangen von nachgeschalteten GCM-Nachrichten unter Android finden Sie unter Remotebenachrichtigungen.
Themenmessaging
Themenmessaging ist eine Art von Downstream-Messaging, bei dem der App-Server eine einzelne Nachricht an mehrere Client-App-Geräte sendet, die ein Thema abonnieren (z. B. eine Wettervorhersage). Themennachrichten können bis zu 2 KB lang sein, und Themennachrichten unterstützen bis zu einer Million Abonnements pro App. Wenn GCM nur für Themennachrichten verwendet wird, muss die Client-App kein Registrierungstoken an den App-Server senden.
Gruppennachrichten
Gruppenmessaging ist eine Art nachgeschaltetes Messaging, bei dem der App-Server eine einzelne Nachricht an mehrere Client-App-Geräte sendet, die zu einer Gruppe gehören (z. B. eine Gruppe von Geräten, die zu einem einzelnen Benutzer gehören). Gruppennachrichten können für iOS-Geräte bis zu 2 KB und für Android-Geräte bis zu 4 KB lang sein. Eine Gruppe ist auf maximal 20 Mitglieder beschränkt.
Upstreammessaging
Wenn Ihre Client-App eine Verbindung mit einem Server herstellt, der XMPP unterstützt, kann sie Nachrichten zurück an den App-Server senden, wie im folgenden Diagramm dargestellt:
Die Client-App sendet eine Nachricht an den GCM XMPP-Verbindungsserver.
Wenn die Verbindung mit dem App-Server getrennt wird, speichert der GCM-Server die Nachricht zur späteren Weiterleitung in einer Warteschlange.
Wenn der App-Server erneut verbunden ist, leitet GCM die Nachricht an den App-Server weiter.
Der App-Server analysiert die Nachricht, um die Identität der Client-App zu überprüfen, und sendet dann ein "ack" an GCM, um den Nachrichtenempfang zu bestätigen.
Der App-Server verarbeitet die Nachricht.
In den Upstreamnachrichten von Google wird erläutert, wie JSON-codierte Nachrichten strukturiert und an App-Server gesendet werden, auf denen der XMPP-basierte Cloud Connection Server von Google ausgeführt wird.
Einrichten von Google Cloud Messaging
Bevor Sie GCM-Dienste in Ihrer App verwenden können, müssen Sie zunächst Anmeldeinformationen für den Zugriff auf die GCM-Server von Google abrufen. In den folgenden Abschnitten werden die schritte beschrieben, die zum Abschließen dieses Prozesses erforderlich sind:
Aktivieren von Google Services für Ihre App
Melden Sie sich bei der Google Developers Console mit Ihrem Google-Konto (d.h. Ihrer Gmail-Adresse) an, und erstellen Sie ein neues Projekt. Wenn Sie über ein vorhandenes Projekt verfügen, wählen Sie das Projekt aus, das GCM-fähig werden soll. Im folgenden Beispiel wird ein neues Projekt mit dem Namen XamarinGCM erstellt:
Geben Sie als Nächstes den Paketnamen für Ihre App ein (in diesem Beispiel lautet der Paketname com.xamarin.gcmexample), und klicken Sie auf Weiter mit Dienste auswählen und konfigurieren:
Beachten Sie, dass dieser Paketname auch die Anwendungs-ID für Ihre App ist.
Im Abschnitt Dienste auswählen und konfigurieren werden die Google-Dienste aufgelistet, die Sie Ihrer App hinzufügen können. Klicken Sie auf Cloudmessaging:
Klicken Sie als Nächstes auf GOOGLE CLOUD MESSAGING AKTIVIEREN:
Ein Server-API-Schlüssel und eine Absender-ID werden für Ihre App generiert. Notieren Sie sich diese Werte, und klicken Sie auf SCHLIEßEN:
Schützen Sie den API-Schlüssel – er ist nicht für die öffentliche Verwendung vorgesehen. Wenn der API-Schlüssel kompromittiert ist, können nicht autorisierte Server Nachrichten an Clientanwendungen veröffentlichen. Bewährte Methoden für die sichere Verwendung von API-Schlüsseln bieten nützliche Richtlinien zum Schutz Ihres API-Schlüssels.
Anzeigen Ihrer Projekteinstellungen
Sie können Ihre Projekteinstellungen jederzeit anzeigen, indem Sie sich bei der Google Cloud Console anmelden und Ihr Projekt auswählen. Sie können beispielsweise die Absender-ID anzeigen, indem Sie Ihr Projekt im Pulldownmenü oben auf der Seite auswählen (in diesem Beispiel heißt das Projekt XamarinGCM). Die Absender-ID ist die Projektnummer, wie in diesem Screenshot gezeigt (die Absender-ID ist hier 9349932736):
Klicken Sie zum Anzeigen des API-Schlüssels auf API Manager und dann auf Anmeldeinformationen:
Weitere Informationen
- RFC 6120 und RFC 6121 erläutern und definieren das Extensible Messaging and Presence Protocol (XMPP).
Zusammenfassung
Dieser Artikel bietet eine Übersicht über Google Cloud Messaging (GCM). Es wurden die verschiedenen Anmeldeinformationen erläutert, die zum Identifizieren und Autorisieren von Messaging zwischen App-Servern und Client-Apps verwendet werden. Es wurden die gängigsten Messagingszenarien veranschaulicht und die Schritte zum Registrieren Ihrer App bei GCM zur Verwendung von GCM-Diensten beschrieben.