2016-06-21 8 views
0

Ich arbeite derzeit an einer Push-Benachrichtigungs-API, die mit mehreren Apps gleichzeitig funktioniert, Benachrichtigungen verarbeitet und die Programmierzeit für zukünftige Apps verkürzt. Es funktioniert bereits teilweise, da ich Benachrichtigungen auf Android-Geräten registrieren und empfangen kann.Sie können mehr über GCM-Fehler erfahren?

Schließlich wird eine unserer Apps Broadcast-Benachrichtigungen an registrierte Benutzer senden. Einige Token sind jedoch möglicherweise abgelaufen, was zu einem GCM-Fehler führt. Ich habe bereits getestet, und es scheint, dass das Senden eines Token-Arrays an GCM mit einem einzigen http-Aufruf sehr gut funktioniert, da Geräte mit gültigen Token ihre Benachrichtigungen erhalten haben.

Was ich nicht finden konnte Suche GCM-Dokumentation war eine Möglichkeit, mehr Informationen im Falle eines Fehlers zu erhalten. Zum Beispiel, wenn ich eine Benachrichtigung an zwei Benutzer, eine mit einem gültigen Token und das andere mit einer ungültigen senden, habe ich dieses Ergebnis:

{ 
"multicast_id":7625209716676388798, 
"success":1, 
"failure":1, 
"canonical_ids":0, 
"results":[ 
    {"error":"InvalidRegistration"}, 
    {"message_id":"0:1466511379030431%c4718df8f9fd7ecd"} 
    ] 
} 

Wir können sehen, dass eine der Nachrichten senden gescheitert, aber Was ich suche, ist eine Möglichkeit, mehr Details zu erhalten, im Idealfall das Token, das zu einem Fehler führt, sodass ich es aus meiner Datenbank entfernen kann.

Jeder Weg, um das zu erreichen? Vielleicht die message_id verwenden? Oder gibt es eine Lösung für mich, ungültige Token in meiner Datenbank zu finden, damit ich sie löschen kann? Ich könnte etwas in der Dokumentation verpasst haben, sogar ein Link dazu wäre nützlich.

Antwort

1

Basierend auf diesem documentation antwortet der GCM-Server Ihrem Server mit einigen Informationen über das Token, mit dem Sie versucht haben, die Push-Benachrichtigung zu senden.

Wenn der App-Server seinen Teil des Registrierungs-Handshakes nicht abschließen kann, sollte die Client-Anwendung gemäß diesem Link erneut versuchen, das Registrierungs-Token an den Server zu senden oder das Registrierungs-Token zu löschen. Das Löschen alter Tokens von den GCM-Servern kann mit ÌnstanceID.deleteToken() erfolgen.

Schauen Sie sich diese Links:

+1

Wow, ich frage mich, wie ich das verpasst. Die Links, die Sie zur Verfügung gestellt haben, haben mir gezeigt, dass die Antwort beim Aufruf von GCM zum Senden von Benachrichtigungen ein JSON-Objekt ist. Mit json_decode konnte ich die Ergebnisse für jede Nachricht abrufen und unter Verwendung von Bedingungen die entsprechenden Aktionen auslösen, wenn das Token nicht gültig ist. Danke vielmals ! – YumeYume

Verwandte Themen