Android GCM无法工作。

8

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

我在客户端上运行应用程序,然后获得注册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 ], 但在客户端上没有任何消息,我不知道为什么。我得到的响应意味着什么?这是成功的响应吗? 我需要帮助理解出了什么问题?
4个回答

6
请查看他们的评论。

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

注意:如果您的组织有限制与互联网之间通信的防火墙,您需要配置它以允许与GCM的连接。需要打开的端口是:5228、5229和5230。GCM通常只使用5228端口,但有时也会使用5229和5230端口。GCM不提供特定的IP地址,它经常更换IP地址。

4
根据 GCM文档所述:
当第三方服务器向GCM发布消息并收到消息ID时,这并不意味着消息已经传递到设备。相反,它意味着消息已被接受以进行传递。消息接受后的处理取决于许多因素。
在最理想的情况下,如果设备连接到GCM,屏幕开启,并且没有限制(请参阅限制),则消息将立即传递。

那么当我们在设备上收到这些消息时。 - Developer
@GauravPandey - 这非常依赖于GCM服务,如果您去查看GCM文档,他们会说消息将由服务器尽快交付。 - bhuvin

2

0
如果您在GCM中遇到延迟通知或消息问题,那么请尝试此解决方案。
我知道这不是正确的解决方案,但它有效。安装此应用程序,它对我非常有效 HERE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接