2012-07-10 35 views
8

我使用goole提供的示例,我構建了一個客戶端應用程序以獲取通知和服務器端,兩個應用程序(代碼)都是由Google提供的應用程序(代碼)。android GCM不起作用

我在客戶端運行應用程序,我得到了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] 但客戶端上沒有消息,我不明白爲什麼。我從服務器得到的迴應是什麼意思?這是成功的迴應嗎?

我需要幫助來理解錯在哪裏?

回答

4

按照GCM Documentation

當第三方服務器發佈消息到GCM和接收消息ID後面,但這並不意味着該消息已傳送到設備。相反,這意味着它被接受交付。消息被接受後會發生什麼取決於許多因素。

在最好的情況下,如果設備連接到GCM,屏幕打開,並且沒有節流限制(請參閱節流),該消息將立即發送。

+0

所以工作的時候,我們會在設備上收到論文信息 – Developer 2013-09-02 11:17:49

+0

@GauravPandey - 這是非常依賴於GCM服務如果你去看看GCM文檔,他們會說服務器會盡快提供消息。 – bhuvin 2013-11-14 10:05:29

6

請檢查自己的評論

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

注意:如果您的組織有限制流量或從Internet防火牆,你需要將其配置爲允許與GCM連接。要打開的端口是:5228,5229和5230.GCM通常只使用5228,但它有時使用5229和5230.GCM不提供特定的IP。它經常更改IP。

0

如果您在GCM中遇到延遲通知或消息問題,請嘗試此解決方案。

我知道這是不是正確的解決方案,但它是WORKS安裝這個程序,它是對我來說真的HERE