2013-10-22 41 views
1

如果手機連接到網絡,我的應用會立即收到GCM消息。但是,當用戶關閉網絡並在長時間間隔(大約2小時)後重新連接時,設備不會收到消息。GCM未在空閒時收到

我還沒有添加TTL,所以假設它會是4周。發送

樣品消息:

{ 
    "registration_ids":["APA9xxx........."], 
    "delay_while_idle":false, 
    "collapse_key":"New Message", 
    "restricted_package_name":"com.sample.gcm", 
    "data":{ 
     "app":2, 
     "product":"message", 
     "notif":"03lm9h" 
    } 
} 

我失去的東西就讓它工作交貨延遲的時候?

請指點我的鏈接,可以幫助我解決這個問題。

在此先感謝。如果設備已連接,但空閒

回答

6

您delay_while_idle應該是真實的,從GCM APi docs

,該消息仍然會馬上除非delay_while_idle標誌被設置爲true交付。否則,它將被存儲在GCM服務器中,直到設備喚醒。這就是collapse_key標誌發揮作用的地方:如果已經存在一條具有相同摺疊鍵(和註冊ID)的消息並且等待傳送,則舊的消息將被丟棄,並且新消息將取代它(即,舊消息將被新消息摺疊)。

您正在使用可摺疊按鍵,因此只有一個按鍵在GCM服務器上保留,而設備處於空閒狀態。

在代碼:

Message message = new Message.Builder() 
    .delayWhileIdle(true) 
    //.. 
+2

只需添加註釋的'delay_while_idle'參數現已正式棄用兩個GCM和FCM。請參閱[文檔](https://developers.google.com/cloud-messaging/http-server-ref)。 –