Abonnieren von Themen mit Google Cloud Messenger-Token, ungültiges Argument erhalten

8

Ich folge dem Beispiel, das google anbietet, um den gcm-Token zu registrieren: Ссылка

Ich habe die google-services.json-Datei korrekt generiert und kann die Push-Token empfangen. Aber wenn ich versuche, ein Thema mit dem folgenden Code zu abonnieren:

%Vor%

Es löst die INVALID_ARGUMENT-Ausnahme aus:

%Vor%

Dies ist ein Beispiel für Push-Token, die ich erhalte:

%Vor%

Ich habe die Dokumentation über das Abonnieren eines Themas überprüft, aber es gibt keinen Hinweis darauf, warum ich die Ausnahme INVALID_PARAMETER erhalte:

Ссылка

Jede Hilfe ist willkommen.

P.d. Es gibt den vollständigen Quellcode, um die Token zu registrieren:

%Vor%

Und das ist der Inhalt von google-services.json

%Vor%     
jiahao 05.01.2016, 11:38
quelle

1 Antwort

4

Es scheint, dass bisher noch niemand dieses Problem gelöst hat, also gebe ich die Lösung, die ich gefunden habe.

Das Problem war, dass wir mehrere Prozesse haben, die das GCM registrieren. Was passiert in 60% der Fälle ist, dass, nachdem wir unser eigenes Gerät registrieren, in der gleichen App, die andere Prozess registrieren auf GCM mit seinem eigenen Absender. Wenn wir also versuchen, ein Thema zu abonnieren, ist das gcm-Token nicht gültig, da das gleiche Gerät, die gleiche App, das gcm für einen anderen Sender registriert hat.

Um das Problem zu lösen, haben wir die Absender-ID aus dem anderen Prozess abgerufen und dann an unseren Absender angehängt.

Nehmen wir an, unsere Absender-ID lautet "1234567" und seine Absender-ID lautet "7654321". Wenn wir also unsere App auf GCM registrieren und nicht nur "1234567" analysieren, verwenden wir "1234567,7654321", getrennt durch Koma .

Dies ermöglicht es uns, ein GCM-Token zu erhalten, das sowohl für uns als auch für den anderen Prozess gültig ist. Wenn jedoch der andere Prozess das GCM nach uns registriert, wird das eigene GCM-Token nicht ungültig gemacht. (Sein GCM-Token ist weiterhin gültig, da wir seinen Absender als Teil der Anfrage angeben).

Prost aus Dubai!

    
jiahao 28.01.2016, 11:21
quelle