有效载荷 4096 字节是不是包含registration_id 长度?
Posted
技术标签:
【中文标题】有效载荷 4096 字节是不是包含registration_id 长度?【英文标题】:Does the payload 4096 bytes include the registration_id length?有效载荷 4096 字节是否包含registration_id 长度? 【发布时间】:2012-12-04 09:44:24 【问题描述】:在android GCM文档中,据说payload最大为4096字节。
有效载荷的 4096 字节是否包括registration_id 长度?我发现我可以发送有效载荷为 16038 字节(包括registration_ids)的消息。
【问题讨论】:
【参考方案1】:不包括注册ID。
很抱歉没有提供任何支持文件。 GCM 文档没有明确说明。但是,我对其进行了测试以验证此行为。 我能提供的唯一“证据”是,在多播消息中,您最多可以包含 1000 个注册 ID。 1000 个注册 ID 显然无法放入有效负载的 4096 字节。
来自http://developer.android.com/google/gcm/gcm.html:
registration_ids
一个字符串数组,其中包含接收消息的设备(注册 ID)列表。它必须包含至少 1 个且最多 1000 个注册 ID。要发送多播消息,您必须使用 JSON。要将单个消息发送到单个设备,您可以使用仅具有 1 个注册 ID 或纯文本的 JSON 对象(见下文)。必填。
【讨论】:
。我不确定。谷歌是否不会将有效载荷中的registration_id计算在内。没有参考文件。在gcm情况下,我发现带有有效载荷的消息:“registration_id”:“APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx ...”,“data”:“Nick” : "Mario", "Text" : "伟大的比赛!", "Room" : "PortugalVSDenmark", , 在您提供的示例中,有效负载长度为 4+5+4+12+4+16(字段名称和值的长度)。您可以通过尝试将它们替换为单个键/值对来自行验证,其中键的长度 + 值的长度 = 4096。您将看到消息将被发送。然后您可以添加单个字符,然后查看该消息将被拒绝。我必须提到的唯一免责声明是我只测试了简单格式,而不是 JSON,但我希望它们的行为相同。【参考方案2】:完成接受的答案。我一直在测试,结果如下:
有效载荷的最大长度为 4096 字节。如果您使用的是 JSON,并且您的消息如下:
"to" : "APA91bGbkLeRLD228BKYQy4syvAYd5ErYiHup5FzofY_8x5CNHmhMlB65CaCHj9ntm7zcMhzDEkd9vi6rxM89cRzPuDLPrlX8UgYExGQ3LmakGTKpkIS0CE9-9tinlIRLMiLoGKDn5jVvks0njvcGFPJSHBn23cd-A",
"data": "a":"Some information. Only this part inside data counts as payload"
消息中唯一算作有效负载的部分是“数据”内的部分。即使您要发送到多个设备也是如此。
"registration_ids" : ["APA91bGbkLeRLD228BKYQy4syvAYd5ErYiHup5FzofY_8x5CNHmhMlB65CaCHj9ntm7zcMhzDEkd9vi6rxM89cRzPuDLPrlX8UgYExGQ3LmakGTKpkIS0CE9-9tinlIRLMiLoGKDn5jVvks0njvcGFPJSHBn23cd-A",
"APA91bGbkLeRLD228BKYQy4syvAYd5ErYiHup5FzofY_8x5CNHmhMlB65CaCHj9ntm7zcMhzDEkd9vi6rxM89cRzPuDLPrlX8UgYExGQ3LmakGTKpkIS0CE9-9tinlIRLMiLoGKDn5jVvks0njvcGFPJSHBn23cd-A"]
"data": "a":"Some information. Only this part inside data counts as payload"
【讨论】:
以上是关于有效载荷 4096 字节是不是包含registration_id 长度?的主要内容,如果未能解决你的问题,请参考以下文章
firebase 如何发送有效载荷包含下划线字符的 JWT 令牌?