1

我有一个 python GCM 服务器(列入白名单)可以很好地接收来自我的 android 应用程序的消息,直到我在数据包中包含除字符串以外的任何内容,在这种情况下,我只能在服务器上获取字符串值。

例如,我的客户端发送一条消息,其中包含一个名为 data 的包,其中添加了一个字符串和一个 int,如下所示:

data.putString("MSG_ID", ALARM_ID);
data.putInt("AA", 1);

我的服务器读取并打印如下:

if gcm:
    gcm_json = gcm[0].getData()
    msg = json.loads(gcm_json)
    print msg

输出是:

{u'category': u'xxxAPPNAMExxxx', u'from': u'xxxxGCMID', u'data': {u'MSG_ID': u'alarm'}, u'message_id': u'1'}
4

1 回答 1

1

在阅读了更多内容后,我发现在前几次阅读中我一定错过了:

public void send (String to, String msgId, Bundle data)

发送上游(“设备到云”)消息。如果您的 GCM 实施使用基于 XMPP 的云连接服务器,则只能使用上游功能。如果我们在最大间隔内没有活动连接,则消息将排队。

标识消息接收者的字符串参数。对于 GCM 项目 ID,该值为 SENDER_ID@gcm.googleapis.com。SENDER_ID 应该是 register() 中使用的发送者 ID 之一。msgId 消息的 ID。这是由应用程序生成的。对于每条消息,它必须是唯一的。这允许错误回调和调试。要发送的数据键/值对。值必须是字符串——任何其他类型都将被忽略。

所以TLDR;只允许使用字符串。

于 2013-09-28T05:28:46.187 回答