我使用goole提供的示例,我构建了一个客户端应用程序来获取通知和服务器端,这两个应用程序(代码)都是由谷歌提供的。
我在客户端运行应用程序,然后获得registration_id。一些巨大的字符串,格式如下:
APA91bEgguwt98xLbivrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLxDalNoEktCSVbOkT0-uFH2FaRnfpkRME2tzuvr0BycMNEhX_Ix1PV_XXXXXXXXXXXXXXXXXXXXXN5hcseY_wA
。
这证明了客户端应用程序的工作原理。现在服务器(java,谷歌示例):
public static void main(String[] args) {
Sender sender = new Sender("AIzaSXXXXXXXXXX_XXXXXXXXXXXXXXXrQOnoGZw");
Message message = new Message.Builder()
.collapseKey("1")
.timeToLive(3)
.delayWhileIdle(true)
.addData("message",
"this text will be seen in notification bar!!")
.build();
try {
Result result = sender.send(message, "APA91bEgguwt98xLbivrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLxDalNoEktCSVbOkT0-uFH2FaRnfpkRME2tzuvr0BycMNEhX_Ix1PV_XXXXXXXXXXXXXXXXXXXXXN5hcseY_wA", 3);
System.out.println(result.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是服务器。当我运行服务器时,我得到的结果如下: [messageId = 0:1341907115903155%921c249a00000031] 但客户端没有消息,我不明白为什么。我从服务器得到的响应是什么意思?这是成功的回应吗?
我需要帮助才能理解出了什么问题?
答案 0 :(得分:6)
请查看他们的评论
http://developer.android.com/guide/google/gcm/gcm.html
注意:如果您的组织有防火墙限制进出Internet的流量,则您需要对其进行配置以允许与GCM建立连接。要打开的端口是:5228,5229和5230. GCM通常仅使用5228,但有时使用5229和5230.GCM不提供特定的IP。它经常更改IP。
答案 1 :(得分:4)
当第三方服务器向GCM发布消息并收回消息ID时,并不意味着消息已经传递给设备。相反,它意味着它被接受交付。邮件被接受后会发生什么情况取决于很多因素。
在最佳情况下,如果设备已连接到GCM,屏幕已打开,并且没有限制限制(请参阅限制),则会立即传递消息。
答案 2 :(得分:3)
您可以点击此链接了解GCM。以下链接对我有用: http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html
答案 3 :(得分:2)
如果您正在使用它,请删除您的互联网防火墙,然后重试
答案 4 :(得分:1)
答案 5 :(得分:0)
如果您在GCM中遇到延迟通知或消息问题,请尝试此解决方案。
我知道这不是正确的解决方案,但是工作安装此应用程序它真的对我有用HERE