设备未收到 GCM 消息
Device Not Receiving GCM Messages
首先,我目前无法 post 编码 info/examples 因为我目前不在拥有该编码的机器旁。如有必要,我会在明天到达那台机器时获取适当的代码片段。
设置
我正在根据 Google 的示例代码实现与本地服务器的 GCM 通信。客户端和服务器都对示例稍作修改。服务器是一个 Java 程序(同样,几乎完全来自演示代码)。
问题
目前,应用程序和服务器使用虚拟 'echo' 设置来回通信良好,这是 Google 的 GCM 通信示例代码的初始设置。
如果我转到我打算与 GCM 一起使用的自定义消息内容,我就会遇到问题。我可以发送从 GCM 驱动的应用程序中找到的消息,但出于某种原因,我没有 将消息从服务器返回到应用程序。
目前我正在测试通过 GCM 与 XMPP 服务器对话的应用程序的基本聊天元素。因此,我可以连接到 XMPP 服务器 w/Pidgin 并查看从应用程序中传出的消息,当我向回发送消息时,它们会被发送到 GCM 服务,但永远不会从应用程序中传出。
Confusions/Questions/Clarifications
- 我很困惑,因为演示行为正常
(消息回显到应用程序)。
- 我正在发送到正确的注册 ID,我可以在演示行为和我的行为之间来回切换多次,但 will/will 无法相应地工作。
- 我在返回到应用程序的任何消息中都没有 collapse_key 或 time_to_live,并且 delay_while_idle 明确设置为 false(未省略)。所以不应该有超快的过早超时或类似的东西(除非我误解了这些键的行为)
- 我的理解是数据字段中没有 'required' 键,这是不正确的吗?如果是这样,我将非常感谢有关数据字段中所需键的任何适当文档的链接。
- 我无法想象存在权限错误,因为它与演示功能一起使用。
目前,我从我的服务器发送回 GCM 应用程序的消息包含以下字段,据我所知,只有其中三个字段是必需的(除 delay_while_idle 以外的所有字段?):
- 到(是的,正确的键在这里)
- delay_while_idle(设置为假)
- 数据(JSON串数据)
- message_id(示例代码模式中自动生成的消息 ID,本质上是随机 UUID)
非常感谢任何帮助。如果您觉得某些代码片段很重要,请让我知道您希望看到什么。
好的,所以我原来的 post 中没有这个信息,但今天早上经过更多调试后我发现了问题。
在我要沿路径服务器->GCM->设备发送的自定义消息的打包中,我错误地放入了 key/value 对 "data":"{JSON字典}”而不是
"data":{JSON 字典},并且缺少 GCM 服务发回的错误,指示 JSON 格式错误。
对于任何对此感到困惑的人,GCM 消息中 "data" 键的值必须是字典,而不是字典的字符串形式(我的无意错误,自动驾驶仪手指失败)。
首先,我目前无法 post 编码 info/examples 因为我目前不在拥有该编码的机器旁。如有必要,我会在明天到达那台机器时获取适当的代码片段。
设置
我正在根据 Google 的示例代码实现与本地服务器的 GCM 通信。客户端和服务器都对示例稍作修改。服务器是一个 Java 程序(同样,几乎完全来自演示代码)。
问题
目前,应用程序和服务器使用虚拟 'echo' 设置来回通信良好,这是 Google 的 GCM 通信示例代码的初始设置。
如果我转到我打算与 GCM 一起使用的自定义消息内容,我就会遇到问题。我可以发送从 GCM 驱动的应用程序中找到的消息,但出于某种原因,我没有 将消息从服务器返回到应用程序。
目前我正在测试通过 GCM 与 XMPP 服务器对话的应用程序的基本聊天元素。因此,我可以连接到 XMPP 服务器 w/Pidgin 并查看从应用程序中传出的消息,当我向回发送消息时,它们会被发送到 GCM 服务,但永远不会从应用程序中传出。
Confusions/Questions/Clarifications
- 我很困惑,因为演示行为正常 (消息回显到应用程序)。
- 我正在发送到正确的注册 ID,我可以在演示行为和我的行为之间来回切换多次,但 will/will 无法相应地工作。
- 我在返回到应用程序的任何消息中都没有 collapse_key 或 time_to_live,并且 delay_while_idle 明确设置为 false(未省略)。所以不应该有超快的过早超时或类似的东西(除非我误解了这些键的行为)
- 我的理解是数据字段中没有 'required' 键,这是不正确的吗?如果是这样,我将非常感谢有关数据字段中所需键的任何适当文档的链接。
- 我无法想象存在权限错误,因为它与演示功能一起使用。
目前,我从我的服务器发送回 GCM 应用程序的消息包含以下字段,据我所知,只有其中三个字段是必需的(除 delay_while_idle 以外的所有字段?):
- 到(是的,正确的键在这里)
- delay_while_idle(设置为假)
- 数据(JSON串数据)
- message_id(示例代码模式中自动生成的消息 ID,本质上是随机 UUID)
非常感谢任何帮助。如果您觉得某些代码片段很重要,请让我知道您希望看到什么。
好的,所以我原来的 post 中没有这个信息,但今天早上经过更多调试后我发现了问题。
在我要沿路径服务器->GCM->设备发送的自定义消息的打包中,我错误地放入了 key/value 对 "data":"{JSON字典}”而不是 "data":{JSON 字典},并且缺少 GCM 服务发回的错误,指示 JSON 格式错误。
对于任何对此感到困惑的人,GCM 消息中 "data" 键的值必须是字典,而不是字典的字符串形式(我的无意错误,自动驾驶仪手指失败)。