2014-12-02 59 views
1

我們正在爲我們的Android應用程序使用推送通知。在1天內,我們看到如何解讀Android應用程序的GCM響應代碼?

-39 messages with the GCM response code of HTTP 200 - OK and 
-16 messages with the GCM response code of HTTP 200 - Not Registered 

「未註冊」是否涉及我們爲應用程序卸載的數量?

此外,39 OK狀態中,我們看到:

-30 are "Stored" 
-9 are "Sent" 

的區別是什麼之間存儲和發送?存儲的消息是否意味着應用程序處於脫機狀態,因此尚未發送?還有其他解釋嗎?

回答

1

這是官方Android GCM文檔

「當第三方服務器發佈消息到GCM和接收消息ID後面,但這並不意味着該消息已傳送到設備,而是,這意味着它被接受了,接受後接受的信息取決於很多因素:

在最好的情況下,如果設備連接到GCM,屏幕就會打開,沒有節流限制(參見節流),該消息將立即送達

如果維德ce已連接但空閒,消息仍將立即傳送,除非delay_while_idle標誌設置爲true。否則,它將被存儲在GCM服務器中,直到設備喚醒。這就是collapse_key標誌起作用的地方:如果已經有一條消息具有相同的摺疊鍵(和註冊ID)存儲並等待傳送,則舊的消息將被丟棄,新消息將代替它(也就是說,舊消息將被新消息摺疊)。但是,如果未設置摺疊鍵,則新郵件和舊郵件都將被存儲以備將來投遞。可摺疊消息也稱爲發送至同步消息。

注意:可以存儲多少條消息而不折疊的限制。該限制目前爲100.如果達到限制,則丟棄所有存儲的消息。然後,當設備重新聯機時,它會收到一條特殊消息,指出已達到限制。然後,應用程序可以處理情況正常,通常是通過請求完全同步。」

欲瞭解更多詳情,請參閱http://developer.android.com/google/gcm/adv.html

+0

我們看到的多數信息在存儲,所以當前在存儲消息可以在設備喚醒後傳送到發送器 – sharataka 2014-12-03 04:41:13

+0

@sharataka是的,如果設備在「time_to_live」期間醒來,它將收到所有存儲的消息(如果存儲的消息計數小於100),或者所有存儲的消息將被丟棄,如果設備在「time_to_live」期間醒來。 – Samik 2014-12-04 07:01:35