2015-06-25 19 views
5

Ich lerne, wie die GCM sowohl von Client-Seite (Android) und von Server-Seite (ASP.NET) zu implementieren. Ich verbrachte ein wenig Zeit damit, die gesamte Google-Dokumentation zu lesen, die sich auf GCM bezog, und ich probierte auch die Probe, die sie zur Verfügung stellten. Da ich die GCM in eine bereits bestehende App integrieren muss, würde ich gerne einige spezifische Dinge wissen.Google Cloud Messaging - Mehrere Konten Mehrere Geräte

Wie ich es verstanden habe, ist die Registrierungs-ID ein Token, der die App auf einem bestimmten Gerät an den GCM Dienst und den App-Server bindet; So kann das Backend Downstream-Nachrichten direkt an dieses Gerät senden.

In meinem Szenario könnte ich mehrere Benutzer haben wer kann die App auf dem gleichen Gerät verwenden, das heißt, sie müssen sich in der App anmelden und sie haben ein Konto auf einer Datenbank auf der Serverseite. Muss ich für jeden Benutzer auf diesem Gerät eine andere Registrierungs-ID speichern? Oder bezieht sich die Registrierungs-ID immer nur auf die App?

Und was ist mit dem gleichen Szenario aber auf mehreren Geräten verteilt, weil ein Benutzer mehrere Geräte haben kann?

Vielen Dank im Voraus.

Antwort

0

Dies bezieht ich eine Menge auf den Kontext Ihrer Anwendung und was wollen Sie mit Benachrichtigungen

mit einem Registrierungs-ID pro Gerät zu tun, in Ordnung sein wird.

Ich verwalte meine mehreren Benutzer mit Abonnement-Tags, die von meinem Server verwaltet werden.

nehmen also das Szenario, wenn Sie einen Sport-App haben:

Benutzer A & Benutzer B das gleiche Gerät. Jeder Benutzer abonniert ein Tag.

Wenn sich Benutzer A abmeldet, löschen Sie die mit diesem Benutzer verknüpften Tags. Wenn sich Benutzer B anmeldet, rufen Sie seine/ihre Tags ab.

Ihr Server kennt Benachrichtigungen, die an das Gerät gesendet werden, basierend auf den Tags, die der Benutzer abonniert hat.

Mehrgeräte Szenario:

Das gleiche gilt, wenn der Benutzer anmeldet Sie ihre Tags erhalten. Das Gerät verfügt auch über ein eigenes Token von GCM.

+0

Ok, ich habe Ihren Standpunkt verstanden. Ich dachte auch, dass es nur vom Server gehandhabt werden könnte. In der Datenbank kann ich eine Beziehung zwischen Benutzern und Registrierungs-IDs speichern, mit einem Feld, das ein Gerät für einen bestimmten Benutzer aktiviert oder inaktiviert. Wenn der Server also eine Downstream-Nachricht an einen bestimmten Benutzer senden muss, ruft er alle aktiven und zugeordneten Registrierungs-IDs ab und sendet die Benachrichtigung an alle Benutzer in Multicast. Könnte es sein? –

+0

Dies verkompliziert die Dinge mehr, warum Ihre Datenbank IDs lokal behandeln? Was ist, wenn der Benutzer alle Daten löscht und dann Daten für mehrere Benutzer verloren haben? – AndroidEnthusiast

+0

Was meinen Sie mit _wenn der Benutzer alle Daten löscht? Der Server speichert alle Registrierungs-IDs, die an ihn gesendet werden, und erstellt Beziehungen basierend auf Konten. Es kann sein, dass, wie in der anderen Antwort gesagt, wenn ein anderer Benutzer sich in der App anmeldet, Informationen an den Server gesendet werden müssen, um zu aktualisieren, wer mit einer bestimmten regID assoziiert ist. –

0

Die Registrierungs-ID ist die ID der App. Sie kann geändert werden, wenn die App-Version aktualisiert wurde. Ihre Push-Benachrichtigung wird unabhängig von Ihrem Benutzerkonto auf dem Gerät mit Ihrer App gesendet. Damit jeder Benutzer auf jedem Gerät Ihre Benachrichtigung erhält, müssen Sie nur eine Registrierungs-ID pro Gerät speichern.

+0

Ok, aber wenn ich die Benachrichtigung nur an einen bestimmten Benutzer senden muss? In der Dokumentation wird auch berichtet, dass "_Die Anfrage an Ihren Server sollte authentifiziert werden, wenn Ihre App Konten verwendet. _" –

+0

Dann müssen Sie den aktuellen Benutzer und seine Registrierungs-IDs speichern, wo sich der Benutzer anmeldet. Die Situation mit einem Gerät und vielen Benutzern : Wenn sich ein neuer Benutzer anmeldet, sendet das Gerät Informationen an den Server, dass dieser Benutzer diese Registrierungs-ID hat. Der vorherige Benutzer mit dieser Registrierungs-ID muss gelöscht werden. Wenn der Benutzer mehrere Geräte verwendet, muss die Datenbank jede Registrierungs-ID speichern. Und Sie senden Push an bekannte reg-IDs, die Ihrem Benutzer entsprechen. – Jane

+0

Laut Ihrem Vorschlag ist es besser, die Beziehung zwischen einem Benutzer und einer regID zu löschen, wenn sich ein anderer Benutzer in der App anmeldet, richtig? –

0

Für mehrere Benutzer. Wenn Ihre Nachrichten Benutzer spezifisch sind, würden Sie wollen es den Benutzer-Token und abonnieren Sie nur abrufen, während sie angemeldet sind, wenn Sie den Benutzer wechseln entfernen/deregistrieren den vorherigen Token, dann speichern/Registrieren Sie das Token des neuen Benutzers.

Sie sollten dies nicht nur tun, wenn Sie mehrere Benutzer pro Gerät haben, aber wenn sich ein Benutzer abmeldet. Dies verhindert, dass benutzerspezifische Nachrichten zu falschen Zeiten für falsche Benutzer angezeigt werden.

Für mehrere Geräte: klingt es so, als ob Sie nach Device Group Messaging suchen.

Mit der Benachrichtigung über Gerätegruppen können App-Server eine einzelne Nachricht an mehrere Instanzen einer App senden, die auf Geräten ausgeführt wird, die zu einer Gruppe gehören. In der Regel bezieht sich "Gruppe" auf eine Gruppe verschiedener Geräte, die zu einem einzelnen Benutzer gehören.

Dies ist auch schön wegen der collapse_key. Wenn eines der Geräte im selben Konto eine Benachrichtigung öffnet, wird die Benachrichtigung auf den anderen Geräten geschlossen.

Verwandte Themen