设备未接收GCM消息

时间:2015-02-10 22:48:01

标签: java android google-cloud-messaging

在此之前,我目前无法发布代码信息/示例,因为我目前不在拥有代码的机器上。如果有必要,我明天到达那台机器时会得到适当的信号。

设置

根据Google的示例代码,我正在向本地服务器实施GCM通信。客户端和服务器都是对示例的轻微修改。服务器是一个Java程序(再次,几乎完全从演示代码中提取)。

问题

目前,App&服务器使用虚拟“回声”设置来回传递,这是Google的GCM通信示例代码的初始设置。

如果我转到我打算与GCM一起使用的自定义消息内容,我就会遇到问题。我可以从GCM驱动的应用程序发送消息查找,但出于某种原因,我将消息从服​​务器返回到应用程序。

目前我正在测试通过GCM与XMPP服务器通信的应用程序的基本聊天元素。所以,我可以连接到带有Pidgin的XMPP服务器并查看来自应用程序的消息,当我发回消息时,它们会被发送到GCM服务,但永远不会出现在应用程序中。

困惑/问题/澄清

  • 我很困惑因为演示行为很好 (消息回显给应用程序)。
  • 我发送了正确的注册ID,我可以在演示行为和我的行为之间来回切换多次,它将/将无法正常工作。
  • 我的任何消息中都没有collapse_key或time_to_live返回到应用程序,并且delay_while_idle显式设置为false(未省略)。所以应该没有超快的过早超时或类似的东西(除非我误解了这些键的行为)
  • 据我所知,数据字段中没有“必需”键,这是不正确的?如果是这样,我将非常感谢链接到数据字段中所需密钥的任何适当文档。
  • 我无法想象存在权限错误,因为它与演示功能一起使用。

目前,我从服务器发送回GCM应用程序的消息包含以下字段,根据我的理解,只需要其中三个(除了delay_while_idle以外的所有内容):

  • to(是的,正确的钥匙在这里)
  • delay_while_idle(设为false)
  • 数据(JSON数据字符串)
  • message_id(示例代码模式中的自动生成的消息ID,本质上是一个随机的UUID)

非常感谢任何帮助。如果您觉得某些代码snippit很重要,请告诉我您希望看到的内容。

1 个答案:

答案 0 :(得分:1)

好的,所以我原来的帖子中没有这个信息,但是今天早上稍微调试了一下我就发现了问题。

在我的自定义消息的打包中,要沿着路径Server-> GCM->设备发送,我错误地输入了"数据"的键/值对:" {JSON字典}"而不是 " data":{JSON Dictionary},并且错过了GCM服务发回的错误,指示JSON格式错误。

对于任何困惑,"数据"您的GCM消息中的键必须是字典,而不是字典的字符串形式(我自己的意外错误,失败的自动导航手指)。