我很难通过c2dm接收消息。实际上我偶尔会收到来自我们服务器的消息,但实际上只有一半的数据。 (我期待一个4位数字,只收到前2位数字...... o.O“)。 然而,最近我们的广播接收器保持绝对沉因此,我开始尝试将我自己的c2dm消息推送到谷歌服务器,看看它是如何做的。
在帖子的底部,您可以找到一个示例类,我如何发送和接收c2dm消息。这一切都非常独立,所以你可以把它插入到C2dmStaticTest.autopilot( yourSenderId, "foo bar", yourServerSideAuthCode, this, this.getPackageName());
让我概述一下发生的事情:
注意:本地内置广播接收器将为每个接收到的意图生成一条日志消息! 每次在类中发出日志消息时,标记将为“c2dmTest”。
当收到带有registration_id的c2dm答案时,也会记录下来 然后会推送一条c2dm消息 我在这里建模我们的服务器尽可能接近以获得更多控制权。 作为一个反向测试,我还发出一个假的C2DM消息,模仿一个实际的Intent并测试广播接收器的RECEIVE动作的功能。
虽然我可以从c2dm服务器收到注册令牌但是我没有收到任何我推送到服务器的消息。正如在介绍中提到的,当我们的Web服务器发送消息时,我观察到相同的行为。
我尽我所能,我相信我已经相应地实现了广播接收器,因为消息发送的服务器响应代码总是200 / OK我也相信消息已成功传送到服务器。
然而,结果不是预期的结果,但我真的缺乏任何想法,我还能做些什么。查找“无法保证邮件传递”等段落也不令人鼓舞。我的意思是现在根本没有提供任何东西:C
androidManifest.xml
答案 0 :(得分:0)
好的,向我们的服务器人员展示这一点,我了解到status code: 200
仅表示通信成功,而不是数据可能存在语义错误。
在这种情况下,我实际上还收到了一个JSONObject,说明密钥不匹配的错误 这就是我所说的各级沟通问题......