6

Android GCM ドキュメントでは、ペイロードには 4096 バイトの制限があると言われています。

しかし、16834 byes のペイロードを送信できることがわかりました。

私は間違いを犯しましたか?長さは次のように計算しました。


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);

さらに、ペイロードが長すぎる場合の GCM からの応答は何ですか?

4

2 に答える 2

13

ペイロードが大きすぎる場合、エラー メッセージに「MessageTooBig」が表示されます。4096 を超えてはならないペイロードの部分は、ペイロード内のすべてのカスタム キーと値です。登録 ID はカウントせず、有効期限や折りたたみキーなどの定義済みのキーもカウントしません。ところで、ペイロードが 4096 バイトを超えてはならないというドキュメントがあっても、4096 文字を超えない限り、より大きなペイロードを受け入れることがわかりました (つまり、より多くのそのため、ペイロードの長さ (バイト単位) は 4096 を超えます)。

于 2012-12-04T18:32:49.167 に答える