Google Cloud Messaging sendet Benachrichtigungen an alle Geräte

8

Ich bin neu in GCM. Ich möchte eine Nachricht an alle Geräte senden, auf denen die App installiert ist. Ich habe über registration_id gelesen: Nach der ersten Verbindung zu GCM sendet Google diese eindeutige Zeichenfolge an das Gerät. Ich bin ein Anfänger in der Serverwelt, aber wenn ich mich nicht täusche, auf Serverseite, um eine Benachrichtigung an Geräte zu senden, muss ich Array von Registrierungs-ID und die Nachricht an Google senden.

Google weiß, wie die Registrierungs-ID hat? Gibt es eine Möglichkeit, Nachrichten an alle Geräte zu senden, ohne die Registrar-ID zu übergeben? Danke.

    
Tenaciousd93 31.07.2013, 08:59
quelle

6 Antworten

11
  

Gibt es eine Möglichkeit, Nachrichten an alle Geräte zu senden, ohne die Registrar-ID zu übergeben?

Auf keinen Fall.
Nach der erfolgreichen Registrierung bei GCM sollten Sie (die Android-Anwendung) die Registrierungs-ID an Ihren Anwendungsserver senden und diese irgendwo in einer Datenbank speichern. Diese Registrierungs-ID wird verwendet, um eine Benachrichtigung an ein bestimmtes Gerät zu senden.

Um eine Benachrichtigung an alle Geräte zu senden, würde das bedeuten, dass Sie alle Registrierungs-IDs aus dieser Datenbank auswählen und diese wie beschrieben in ein Array einfügen und an GCM weiterleiten.

    
Andy Res 31.07.2013, 09:04
quelle
15

Mit GCM 3.0 ist es nun möglich, dank der Unterstützung von Themen eine Benachrichtigung an alle Geräte zu senden. Die App muss sich für ein oder mehrere Themen anmelden, und der Server kann Benachrichtigungen an dieses Thema senden, ohne einzelne Geräte anzugeben.

Ссылка

Sie können alle Geräte einem Thema namens "global" zuordnen und dann die Nachricht an "/ topics / global" senden, anstatt sie an alle Registrierungs-IDs zu senden.

    
quelle
6

Sie müssen die Liste der reg-IDs von Geräten senden und diese Liste sollte nicht größer als 1000 sein. Dies ist eine Einschränkung von GCM, wenn Sie Nachrichten an mehr als 1000 Geräte senden möchten, dann müssen Sie die Liste in 1000er teilen .

    
Sumit Dhaniya 31.07.2013 09:35
quelle
6

JA, es gibt eine Möglichkeit, eine Nachricht an alle zu senden!

Senden Sie einfach das Feld 'to' an den Wert '/ topics / global', und dann im Feld 'registration_ids' die IDs.

Zum Beispiel in php:

%Vor%

und nicht das:

%Vor%     
Mark Szabo 08.11.2015 15:46
quelle
1

Erstellen Sie die notification_key , die die Gerätegruppe durch Zuordnen einer bestimmten Gruppe zu allen zugeordneten Registrierungstoken der Gruppe identifiziert (Sie können Benachrichtigungsschlüssel auf dem Anwendungsserver erstellen). Mit einem notification_key kann der Anwendungsserver eine Nachricht an das notification_key senden, anstatt eine Nachricht gleichzeitig an ein Registrierungs-Token zu senden, und GCM sendet die Nachricht dann an alle Registrierungs-Token der Gruppe.

Beachten Sie auch, dass für einen Benachrichtigungsschlüssel maximal 20 zulässig ist.

Die Google Dev-Website hat speziell für dieses Thema einen neuen Leitfaden hinzugefügt. Ссылка

    
onexf 20.04.2016 05:12
quelle
-1

Ich denke, hier herrscht Verwirrung. Ich hatte den Github-Beispielcode (App-Server in Java, der beispielsweise für Tomcat bereitgestellt wurde) und die Android-App verwendet. Dort habe ich keine Registrierungs-ID an den App-Server "weitergeleitet" oder "gesendet". Es rief die relevanten APIs auf, um die Registrierungs-IDs abzurufen und sie zum Senden von Benachrichtigungen zu verwenden. Warum sagt jeder Thread zur GCM-Registrierungs-ID, dass Registrierungs-IDs an den App-Server eines Drittanbieters weitergegeben werden müssen? Ich fürchte, ich stimme nicht zu. Ich denke, der 3rd-Party-App-Server kann den GCM-Server selbst abfragen, um herauszufinden, welche Geräte registriert sind, um Benachrichtigungen von einem bestimmten Absender (Sender-ID) zu erhalten. Das manuelle Übergeben der Registrierungs-IDs an den App-Server von Drittanbietern verhindert den gesamten Zweck der Automatisierung des Prozesses. Vielleicht fehlt mir hier etwas oder ich verwende den veralteten Inhalt. Wie auch immer, wie kann ein automatisierter Prozess manuelle Eingriffe nach dem Start beinhalten?

    
Prasad 23.12.2013 06:27
quelle