2012-08-27 46 views
0

雖然我的設備沒有互聯網連接,但我正在使用GCM從服務器嚮應用程序發送消息。之後,當設備連接互聯網時,我無法獲得消息。這是正常的嗎?當設備連接互聯網時,我無法獲取舊信息 - GCM

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

如果設備沒有連接到GCM,該消息將被存儲,直到建立了連接(同樣尊重摺疊密鑰規則)。

我的郵件有相同的摺疊鍵;但是當設備連接時,我仍然只能得到1條消息。

+0

相同合攏鍵意味着將只得到1信息:'如果已經有與存儲等待傳送相同的崩潰密鑰(和登記ID)的消息,舊的消息將被丟棄,並且新的信息將會取它的位置(也就是說,舊信息將被新信件摺疊)' – Selvin

+1

@Selvin我無法得到這條信息,我已經發送了一條消息,但是從服務器到應用程序沒有連接。 – user1451549

+0

SRY的朋友這就是谷歌告訴我還沒有任何遷移到C2DM GCM卻又如此不那麼肯定對this--請您檢查時的網絡連接回來谷歌播放記錄在 –

回答

3

你可以得到所有的信息發送到你的設備。

GCM服務器保留的所有郵件發送到您的設備的帳戶。每當設備連接到互聯網時,它會在通知區域顯示這些信息。

你,因爲你是在分配相同通知ID通知()代碼的功能

你的代碼可能使用此只得到一個消息:

 // 0 is notification id 
     notificationManager.notify(0, notification); 

改變你的通知ID每次獲取通知區域中的所有消息。

如:

 static int NOTIFICATION_ID = 0; 

     if (NOTIFICATION_ID > 1073741824) { 
      NOTIFICATION_ID = 0; 
     } 
     notificationManager.notify(NOTIFICATION_ID++, notification); 

if語句讓你從int值溢出安全。您可以根據您的要求忽略它。

我已經測試過這種情況。現在輪到你了。
高興地幫助!

+0

能告訴我爲什麼這個限制「1073741824」,它是隻是因爲整數限制或背後的任何特定原因 – Chandra

+0

這只是整數限制,如果你消耗大量的消息。您可以根據您的應用程序上下文刪除它。 –

相關問題