8

我使用 goole 提供的示例,并构建了一个客户端应用程序来获取通知和一个服务器端,这两个应用程序(代码)都是 google 提供的。

我在客户端运行应用程序并获得了registration_id。一些巨大的字符串,格式如下:

APA91bEgguwt98xLbivrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLxDalNoEktCSVbOkT0-uFH2FaRnfpkRME2tzuvr0BycMNEhX_Ix1PV_XXXXXXXXXXXXXXXXXXXXXN5hcseY_wA.

这向我证明了客户端应用程序有效。现在服务器(java,google示例):

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 ] 但客户端上没有消息,我不明白为什么。我从服务器得到的响应是什么意思?是成功响应吗?

我需要帮助以了解问题所在?

4

4 回答 4

6

请查看他们的评论

http://developer.android.com/guide/google/gcm/gcm.html

注意:如果您的组织有防火墙限制进出 Internet 的流量,您需要将其配置为允许与 GCM 连接。要打开的端口是:5228、5229 和 5230。GCM 通常只使用 5228,但有时会使用 5229 和 5230。GCM 不提供特定 IP。它经常更改IP。

于 2012-07-10T16:23:07.947 回答
4

根据GCM 文档

当第 3 方服务器向 GCM 发布消息并收到返回的消息 ID 时,并不意味着该消息已经传送到设备。相反,这意味着它已被接受交付。消息被接受后会发生什么取决于许多因素。

在最好的情况下,如果设备连接到 GCM,屏幕处于开启状态,并且没有节流限制(请参阅节流),则消息将立即传递。

于 2012-07-11T11:22:12.923 回答
2

如果您正在使用它,请删除您的互联网防火墙,然后重试

请通过这个

于 2012-11-20T09:29:28.050 回答
0

如果您在 GCM 中遇到延迟通知或消息问题,请尝试此解决方案。

我知道这不是正确的解决方案,但它是有效的安装这个应用程序它真的对我有用这里

于 2016-05-04T09:11:15.417 回答