Google Cloud Messaging for Android,簡稱GCM,是Google為Android系統所設計的訊息發送服務,利用GCM,Android的APP設計師可以輕易的隨時將訊息從伺服器主動推送至手機,而不需要讓手機定時自動連線至伺服器,以節省網路連線以及手機的電量。此種類型的服務易被稱為推播服務(Push service),在不同平台的手機皆有近似的服務流程。
由於GCM的前身是Android Cloud to Device Messaging Framework(簡稱C2DM),雖然Google早在2012年六月停止C2DM服務,網路上仍然存在許多C2DM的實作技術文章,且GCM實作討論也隨著服務日漸成熟,目前仍有許多失去時效且不能使用的作法在各討論區,參考資訊混雜而且時效不明。至於參考書籍,筆者曾於2013年十月至天龍書局找尋參考資料,可能是運氣不好,包括原文書在內翻了數十本書並沒有找到任何一本書有GCM的教學。此外Google所提供的GCM範例程式碼在筆者剛開始製作GCM服務時提供了兩個檔案,由於Google並未在範例中說明何種做法可行,其中一種後來驗證是已經失效的做法,更增加了開發時除錯的難度。
筆者一開始就選到失效的做法,照著做並查遍許多討論文章之後,才看到也有其他人也提出範例程式碼失效的說法,於是使用另一個範例之後終於成功。由於筆者發展能使用GCM的APP費了不少苦心,找遍許多討論區與實作方式,總算成功完成推播,也因此決定以GCM作為主題撰寫本文,希望看過本篇文章的APP工程師在實作GCM時能夠避開筆者踩過的地雷,文章中所使用的程式碼至少在目前(2014年六月)仍然可以使用。
先從前置作業開始,首先要先申請一組Google project以便能使用Google API。
步驟1.申請Google API服務並啟用GCM。
先到https://console.developers.google.com/ 以未來預計提供服務的Gmail帳號登入,未來Google可以提供一些免費的分析報表,例如連線數、使用率等等。
點選Creat Project,為自己的Project命名。PROJECT ID後續不會用到,由系統自動產生即可。
步驟2.創好project會自動進入Overview,記下Project Number,Project Number可以視為專案使用API時候的發送對象,發送時會將訊息發送給帶有這組數字的APP。
步驟3.接著點選APIs&auth的API項目,找到Google Cloud Messaging for Android之後點選OFF,已啟用GCM的服務。
步驟4.點選Credentials,記下Key for server applications的API key並且保密。API key可以視為專案使用API時候的帳號密碼。若API key不慎被有心人士取得,則有可能濫發訊息至APP上。真有外洩疑慮或者任何想更換key時,可以點選Regenerate key,可以取得新的key,舊的key於24小時候失效。
也可以設定連線IP讓服務更安全,額外的設定在此先不多做說明。API設定到這邊完成。
筆者發現Google的API設定網頁每過一段時間連進來看(約數個月),項目與排版都會有所變化,不過名稱變化不大(例如Google Cloud Messaging變成Google Cloud Messaging for Android,多了for Android),所以實作時發現跟文中圖片不一樣時就請花點時間找一下吧。
接著在下一篇說明Push基本原理以及伺服器的設定。
相關文章:GCM實作初探(二)