Monday, February 13, 2012

Android Push Notification推播機制(3)-collapse key

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

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

一、前言
前一篇提到,
Collapse keyC2DM機制中,
App Server發出訊息給C2DM時,
必須附上的值。
但這個值倒底是在什麼時候會用到?

二、文章開始
舉例來說,
倘若使用者開啟了飛航模式,
但是App Server端卻不斷的發出訊息給C2DM
C2DM為防止使用者一旦解除飛航模式收到爆炸性的訊息通知,
因此設計了collapse key,
collapse key控制了C2DM應該要儲存和發送多少組訊息給手機。

在C2DM官方API文件中,
對於collapse key的解釋是這樣的︰
An arbitrary string that is used to collapse a group of like messages when the device is offline, so that only the last message gets sent to the client. This is intended to avoid sending too many messages to the phone when it comes back online. Note that since there is no guarantee of the order in which messages get sent, the "last" message may not actually be the last message sent by the application server. Required.
這個值必傳。collapse key是一組隨意的字串。主要目的是當手機在離線模式下,降低收到群體訊息的可能性。以防萬一手機恢復連線了,突然間收到爆炸量的訊息。註︰並不保證App Server裡的最後一組訊息是按照當初發送訊息做排列。

也就是說,
如果後來又有相同的collapse key傳送至C2DM
那麼原本存在C2DM的訊息,
將會被覆蓋。


三、總結
經由App Server端Collapse key的重覆使用,
手機端因而不會重覆收到大量的重覆訊息,
這麼做不外乎就是降低手機資源的使用,
也保障了傳訊人員資訊傳達的準確性。

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

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


2 comments:

rocoo said...

官方意思說當恢復連線狀態,那會收到"最後"一組訊息,但是APP Server不保證訊息的排序跟當初發送的順序是一致的。所以說可以確保會收到訊息,但是訊息內容"可能"不是最新的? 不知道我有沒有誤解這個意思?

潘小鰻 said...

@rocoo 我的認知也是醬子