Monday, February 13, 2012

Android Push Notification推播機制(4)-[狀況1]手機在飛航模式下

撰寫時間︰2012/02/12 14:35
更新時間︰2012/02/04 15:52
文章更新次數︰1

以下內容由Google I/O 2010 - Building push applications for Android  26:00 翻譯擷取

一、前提
這篇是C2DM的進階內容,
必須先了解第123篇後,
再來閱讀此篇內容

第1篇第2篇中,
我們提到的C2DM流程是當手機與Connect Server在連線狀況下的說明,
那…萬一手機沒有和Connect Server連線(也就是當手機沒有連上網時),
message又該如何傳達呢?

二、文章開始

1.App Server如同以往,發送訊息給C2DM,不同的是︰手機此時並沒有與Connect Server連線。

2.C2DM前端一收到訊息,也如往常般將訊息傳至C2DM後端

3.然後,將訊息儲存起來

4.但在此時,C2DM前端發現了手機並未與Connect Server連線,因此,C2DM前端無法將訊息傳給Connect Server。

5.如果App Server又用同一個collapse key,再次將訊息傳給C2DM

6.這時候C2DM前端,檢查到是同一個collapse key發出來的訊息,會將C2DM後端裡,先前儲存下來的訊息覆蓋成現在這組新的訊息

當然,我們也可以用別的collapse key,這樣就不會有被覆蓋的行為發生。
但是,每個App在C2DM中至多只會記住4筆不同的訊息。

7.手機解除了飛航模式並跟Connect Server連線後,C2DM才會將訊息通知給手機。

8.手機的App此時才會收到App Server傳來的訊息通知。

三、總結

在這篇文章裡,
我們得知手機在與Connect Server離線的狀況下,
C2DM機制的運作方式。

但在前面流程中第7~8點中,
為什麼手機在與Connect Server連線後,
還能知道之前有訊息傳來?

這是因為在C2DM中,
存在了一種機制,
叫做"Attenuation(電力衰減防護)",
請見下一篇的說明。

下一篇︰
Android Push Notification推播機制(5)-Attenuation

相關文章︰
Android Push Notification推播機制(1)-簡介篇
Android Push Notification推播機制(2)-實務篇
Android Push Notification推播機制(3)-collapse key
Android Push Notification推播機制(6)-[狀況2]手機在待機下
Android Push Notification推播機制(7)-[實例分享]以Chrome to Phone為例
Android Push Notification推播機制(8)-問答篇
官方技術公報 - Android Cloud To Device Messaging


No comments: