2016-04-15 4 views
0

Ich implementierte Push-Benachrichtigung für eine meiner Anwendung. Ich erhalte Benachrichtigung im Allgemeinen, aber wenn ich will, Ist-Daten senden, die unter 2k Byte ist, aber unter Reaktion mit Fehler bekommen ...Web-Push-Benachrichtigung Fehler "MessageTooBig" beim Senden Nutzdaten

Anfrage:

curl --header "Authorization: key=AIzaSyDx43ertyuOm459WczpBwAqKSw8IxFHGQs" --header Content-Type:"application/json" --header "Encryption: salt=wtKCDREj4rt562LWk1muo3FA==" --header "Crypto-Key: dh=BPqg7luAvMisfd45sj5ZaBX7GSz9sSfSt3lhpA3Ea3qHCE_l6pi4bXZ3AsNX179iGWMDDQT9IqhHyXBw0230_kc=" --header "Content-Encoding: aes56ggcm" https://android.googleapis.com/gcm/send -d "@/tmp/data" --insecure 

/tmp/data having very less data. 

Antwort:

{"multicast_id":6999436345666218533,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MessageTooBig"}]} 

ich bei einigen Artikeln gesucht und unten ...

gefunden

Überprüfen Sie, ob die Gesamtgröße der Nutzdaten in einer Nachricht die GCM-Grenzwerte nicht überschreitet: 4096 Byte für die meisten Nachrichten oder 2048 Byte im Fall von Nachrichten an Themen oder Benachrichtigungen unter iOS. Dies umfasst sowohl die Schlüssel als auch die Werte.

aber meine vollständige Nutzlast Datengröße ist weniger als 2k Bytes.

Jede Hilfe wäre willkommen.

Antwort

0

Message Too Big

Die Gesamtgröße der Nutzdaten, die nicht überschreiten kann 4096 Bytes in einer Nachricht enthalten ist. Beachten Sie, dass dies sowohl die Größe der Schlüssel als auch die Werte umfasst. Tritt auf, wenn der Fehlercode MessageTooBig lautet.

Nach Raghav Sood:

Sie können Folgendes verwenden, um den Bytes einen String zu erhalten:

String s = "some text here"; 
byte[] b = s.getBytes("UTF-8"); 
int bytes = b.length; 
Make sure that you specify the encoding of the String, as different encodings may take up a different number of bytes for the same String. In the above example, UTF-8 is used as the encoding. 

Um das Bytes in kB zu konvertieren, teilen nur von 1024.

Dadurch können Sie sicherstellen, dass Ihre Nachricht die Gesamtgröße der Nutzdaten nicht überschreitet.

1

Ich hatte ein ähnliches Problem "MessageTooBig", als es offensichtlich war nicht während des Sendens von WebPush-Benachrichtigungen über GCM.

Es stellte sich heraus, dass das Problem in Base64-Codierung war. Laut Web-Push-Verschlüsselungsspezifikation muss für sal- und Public-Key-URL die sichere base64-Codierung verwendet werden, für GCM-raw_data müssen Sie jedoch nur "normale" Base64-Codierung (mit == am Ende) durchführen.

Die Änderung der base64-Codierung für raw_data hat dieses Problem für mich behoben.

Verwandte Themen