有效负载4096字节是否包含registration_id长度?

时间:2012-12-04 09:44:24

标签: android push-notification google-cloud-messaging

在Android GCM文档中,据说有效负载限制为4096字节。

有效负载的4096字节是否包含registration_id长度?我发现我可以发送一个有效载荷为16038字节的消息(包括registration_ids)。

2 个答案:

答案 0 :(得分:7)

它不包括注册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对象,或纯文本(见下文)。必需的。

答案 1 :(得分:0)

完成接受的答案。我一直在测试这个,结果如下:

有效负载的最大长度为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"}
}