2012-08-09 141 views
0

我嘗試從http://developer.android.com/guide/google/gcm/gs.html從服務器 - 連接GCM

Sender sender = new Sender(myApiKey); 

       Message message = new Message.Builder() 
       .collapseKey("1") 
       .timeToLive(3) 
       .delayWhileIdle(true) 
       .addData("message", "message is created at builder") 
       .build(); 

       Result result = sender.send(message, reGid, 5); 
       System.out.println("result of message is "+result); 

實現與谷歌雲端通訊應用程序,因此我得到一個消息ID,可以從控制檯中看到的消息發送給應用;但我想在我的設備上留言,祝酒。

GCMIntentService.java:

@Override 
protected void onMessage(Context arg0, Intent arg1) { 
    Log.i(TAG, "new message= "); 
    Toast.makeText(this, arg1.getStringExtra("message"), Toast.LENGTH_SHORT) 
      .show(); 
} 

從GCM高級主題:

當第三方服務器發佈消息到GCM和接收消息ID後面,但這並不意味着該消息已經交付給設備。相反,這意味着它被接受交付。消息被接受後會發生什麼取決於許多因素。 在最好的情況下,如果設備連接到GCM,則屏幕打開,並且沒有節流限制(請參閱節流),將立即發送消息。

我不明白什麼意思是「設備連接到GCM」。 設備如何連接GCM,連接互聯網和從設備運行應用程序是不夠的?

回答

2

連接到GCM取決於幾件事情。

  1. 該設備已註冊到接收消息 - GCMRegistrar.register
  2. 該裝置具有允許待遞送
  3. 裝置符合針對已安裝軟件的某些要求,允許消息的傳遞的消息的連接 - 即谷歌API的 - 最低SDK 2.2

UPDATE: 當您發送您收到一個狀態響應它,如果一切正常的消息將意味着一個消息ID。除非郵件發送到該設備(使用設備註冊的GCM ID),否則發送該郵件的設備將不會收到該郵件。設備註冊ID在設備呼叫註冊後返回。

請注意,GCM不能保證郵件將被髮送。它通常非常可靠,但如果交付至關重要,則不應使用。

是onMessage()是設備接收新消息的入口點。

+1

1.和2.項目完成,但我不明白3.項目。設備有互聯網連接,並在該應用程序運行後用Google帳戶登錄,但我無法獲取Toast消息。你能解釋3. item和onMessage方法是否正確? – user1451549 2012-08-10 12:45:24

2

您應該按照這個鏈接來獲得你的所有問題的答案:

http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

,你只需要實現客戶端和服務器。我已經在我自己的PC上實現並獲得了運行代碼。
我已經在PC上測試過移動也。

源代碼可用。你只需要下載並遵循一些簡單的步驟。

我敢打賭你會讓你的代碼在30分鐘內運行。

樂意幫忙!

+1

actuall我需要一個像開發人員站點樣例中的java示例如何使用Message Message = new Message.Builder()。build();修改自定義消息 – shareef 2013-06-06 17:21:50