app 發布後,想要從 server 發訊息給 client 時,該怎麼做呢?一直保持 server 與 client 間的連線?若 server 只是偶而或幾天才發送一次訊息,這樣做不僅耗電還浪費資源,重點是很可能被使用者移除!但是不保持連線,那要如何讓 server 主動將訊息傳給 client 呢?下面就來介紹一下 Android 如何透過 GCM 讓 server 將訊息傳送給 client
GCM ( Google Cloud Messaging for Android ) 簡介
- 由 Google 提供的一個 service
- C2DM ( Android Cloud to Device Messaging ) 於 2012/6/26 正式棄用,由 GCM 取代
- 主要用來幫助 server push message to android device
※ C2DM 改成 GCM,取得 API Key 流程可參考 Google 雲端通訊 (GCM) - GCM 節流機制:
- 一個 client 在 GCM 上訊息,最多可保留 100 則 ( key - value )
- 若 client 四周內都沒有連上 GCM server ,則 GCM 上訊息將被丟棄
- 一次發送訊息給太大量的 Android device,訊息就會直接被丟棄,建議一次最多發送給 100 個 client
GCM 硬體需求及限制
- android 2.2 ( 含 ) 以上系統
- 推送的訊息大小不可以超過 4kb
- Android Devices 必須有安裝 Google Service Framework ( 安裝 Google Play Store 時會自動安裝)
- 如果你的 Android Device 目前 run 的版本低於 4.0.4 的話,你就需要申請一個 Google Account
GCM 原理
- client 對 GCM server 註冊取得 regId,regId 長達 162 字元,建議存放 regId 的欄位長度最好大於 162 字元,避免未來 regId 長度增加
- client 將 regId 傳給自己的 server 存起來
- server 從資料庫中取出 client regId,並將 regId 與訊息以 JSON 格式傳送至 GCM server
- client 註冊接收 GCM broadcast
- GCM server 將訊息以 broadcast 傳送至 client
- client 做自訂的工作
GCM 註冊流程
(1) 建立一個Google Account
(2) 建立一個 project
※ 注意,請先記住 project number,之後 client 註冊,server 傳訊息都需要使用他
(4) 切到 APIs 頁籤,將 Google Cloud Messaging for Android 服務打開
(5) 建立 api key
(6) 選擇 server key
※ 注意,請先記住 server api key,之後 server 傳訊息都需要使用他
※ Server 與 Client 實作部分請參考下篇 push notification - android client 以 GCM 實現 (二)
References
- 使用 GCM(Google Cloud Messaging)
- Android Cloud to Device Messaging Framework
- C2DM ( Android Cloud to Device Messaging )
- Google 雲端通訊 (GCM)
範例下載 ( 測試時請記得將 ConfigUtil 中 SERVER_URL, SENDER_ID, API_KEY 換掉 )
沒有留言:
張貼留言