在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 会做出什么响应?
如果有效负载太大,您将在错误消息中收到“MessageTooBig”。
负载中不得超过 4096 的部分是负载中的所有自定义键和值。您不计算注册 ID,也不计算预定义键,例如生存时间和折叠键。
顺便说一句,我发现即使文档说有效负载不得超过 4096 字节,只要不超过 4096 个字符,它们就接受更大的有效负载(即,您可以发送一个 4096 个字符的字符串,其中包含编码为更多字符的字符)超过 1 个字节,因此有效负载的长度(以字节为单位)将超过 4096)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)