6

zählen Im Android GCM-Dokument heißt es, die Nutzlast hat ein Limit von 4096 Bytes.Wie man android gcm Payload Länge

Allerdings habe ich festgestellt, dass ich eine Nutzlast mit 16834 Byes senden kann.

Habe ich einen Fehler gemacht? I berechnet die Länge wie folgt:


Map<Object, Object> jsonRequest = new HashMap<Object, Object>(); 
setJsonField(jsonRequest, GCMConstants.PARAM_TIME_TO_LIVE, message.getTimeToLive()); 
setJsonField(jsonRequest, GCMConstants.PARAM_COLLAPSE_KEY, message.getCollapseKey()); 
setJsonField(jsonRequest, GCMConstants.PARAM_DELAY_WHILE_IDLE, message.isDelayWhileIdle()); 
jsonRequest.put(GCMConstants.JSON_REGISTRATION_IDS, registrationIds); 
Map<String, Object> payload = message.getData(); 
if (!payload.isEmpty()) { 
    jsonRequest.put(GCMConstants.JSON_PAYLOAD, payload); 
} 
String requestBody = gson.toJson(jsonRequest); 
System.out.println(requestBody.getBytes("UTF-8").length); 

Außerdem, was ist die Antwort von GCM, wenn die Nutzlast zu lang ist?

Antwort

13

Wenn die Nutzlast zu groß ist, erhalten Sie "MessageTooBig" in der Fehlermeldung. Der Teil der Nutzlast, der 4096 nicht überschreiten darf, sind alle benutzerdefinierten Schlüssel und Werte in der Nutzlast. Sie zählen die Registrierungs-IDs nicht und Sie zählen vordefinierte Schlüssel wie Lebensdauer nicht und Schlüssel zu reduzieren. Übrigens habe ich herausgefunden, dass obwohl die Dokumentation besagt, dass die Nutzlast 4096 Bytes nicht überschreiten darf, sie größere Nutzlasten akzeptieren, solange sie 4096 Zeichen nicht überschreiten (dh Sie können eine 4096 Zeichen lange Zeichenfolge senden, die in mehr als ein Byte, so wird die Länge der Nutzlast in Bytes 4096 überschreiten).

+1

das ist eine gute Nachricht - so kann ich eine einzige Anfrage für so viele Registrierungs-IDs, die ich will senden? oder gibt es eine Grenze dafür? – epeleg

+2

@epeleg Das Limit ist 1000 Registrierungs-IDs. – Eran

0

Ab heute erlaubt es bis zu 4089 Zeichen über GCM gesendet werden und 511 Zeichen waren in der Benachrichtigungsleiste sichtbar, wenn es nach unten rutscht. Haben Sie es praktisch getestet