在android GCM文档中,据说有效载荷的限制为4096字节。
但是,我发现我可以发送16834个有效载荷。
我犯了错误吗?我按如下方式计算了长度:
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的响应是什么?
答案 0 :(得分:13)
如果有效负载太大,您将在错误消息中收到“MessageTooBig”。 有效负载中不得超过4096的部分是有效负载中的所有自定义密钥和值。您不计算注册ID,也不计算预定义的密钥,例如生存时间和折叠密钥。 顺便说一句,我发现尽管文档说有效负载不得超过4096字节,但只要它们不超过4096个字符,它们就会接受更大的有效负载(即你可以发送一个4096个字符的字符串,其中包含编码为更多的字符超过一个字节,因此有效载荷的长度(以字节为单位)将超过4096)。
答案 1 :(得分:0)
但截至今天,它允许通过GCM发送4089个字符,并且当它向下滑动时,通知面板中可以看到511个字符。 实际测试过它