1. 程式人生 > >Android系統使用谷歌官方GCM推送指南

Android系統使用谷歌官方GCM推送指南

本文旨在為所有Android系統手機普通使用者提供使用谷歌GCM推送的教程,注意這不是用於開發者的。雖名為指南,但多少是探索性的,因為一些細節筆者尚未搞清楚,希望各位指正。

由於大部分國內應用沒有使用GCM推送服務,那麼如果你手機裡的應用幾乎沒有使用GCM服務的應用,那麼即使打通GCM也是沒有意義的。本文的適用者是使用了一些依靠GCM服務給使用者推送訊息和通知的應用的Android手機使用者。那麼哪些應用是依靠GCM服務的?一般面向國際市場的應用使用了GCM,比如Facebook、Twitter這樣的社交應用,CNN、BBC這樣的新聞應用,Outlook這樣的工具應用,等等。

較常用的判定應用是否使用了GCM的方法是安裝一個安卓工具類應用“綠色守護”,該應用中會對使用GCM服務的應用作一個標識。

顯示藍色GCM標識的即為依靠GCM推送訊息的應用。部分國內應用也有GCM,比如網易系。微信也有GCM,但在國內主要通過駐留後臺。鐵路12306也有GCM,但只是掛羊頭賣狗肉。

為了對部分小白友好,在此之前,我要對GCM作一個簡要介紹。

一、什麼是GCM?

GCM,全稱為Google Cloud Messaging,譯為Google雲端通訊。它能夠讓第三方應用的開發者把通知訊息或資訊從伺服器傳送到所有使用這個應用的安卓系統或Chrome瀏覽器的應用或拓展上。

大部分國內應用沒有使用GCM服務,而大量國外應用使用了GCM服務。那麼,我們Android系統上的應用又是如何在沒有使用GCM服務的情況下把訊息推送給我們的呢?有三種情況。

第一種情況是像QQ、微信這樣的應用,它們長期駐留在系統後臺,長期佔用一部分記憶體來推送訊息。也就是說,雖然你以為你關閉了QQ和微信,但其實這一部分執行推送任務的QQ和微信模組仍在後臺工作。

第二種情況是使用第三方推送服務,這是谷歌服務在國內執行情況不佳的產物,第三方推送服務在國內有多家,是在第三方應用中加註SDK實現,但在不同的ROM中不同的第三方推送能否按時送到則參差不齊。

第三種情況則是使用了GCM服務的應用,主要是大量的來自國外的應用和少部分來自國內的應用,比如Facebook、Twitter、CNN、BBC,與第三方推送服務不同的是,它是系統層級的,第三方應用的伺服器把訊息傳送給谷歌的伺服器再轉接到各個使用者。IOS、Windows 10系統的訊息推送亦是在應用未執行的情況下由第三方伺服器轉給蘋果或微軟的伺服器,再推送給使用者。

二、為什麼要使用GCM?

一個系統,理應只有一套主要的推送模式。IOS如此,Windows 10如此,Android也應如此。實際上Android確實只有一套推送模式,但那是在國外。由於谷歌被迫退出了中國大陸,以及相關服務遭到GFW的封鎖,同時谷歌的Android系統卻又在國內大行其道,Android原生態的谷歌服務難以使用,這就使得Android在國內的碎片化極其嚴重,嚴重影響了使用者的使用體驗。

對於使用者而言,使用GCM服務的好處有:

(1)充分利用依靠GCM服務的應用,快捷地獲取訊息、資訊和通知,比如即時獲得CNN、BBC的突發新聞推送;

(2)突破網路防火長城GFW的封鎖,即時在未翻牆的情況下也能獲得遭到GFW封鎖的應用的通知,比如Facebook、Twitter的通知,Messenger、Line的訊息;

(3)不需要開啟這些應用就可以獲取通知,節約記憶體、節省電量。

(4)完整Android系統的體驗。

  (5)  剋制Android系統使用體驗碎片化的問題。

三、如何使用GCM?

接下來進入本文的重點,再次宣告,這只是本人的經驗性總結,一些細節我還尚未弄清楚,如果您願意的話,可以在實際操作中與我一起完善走向GCM之路。

目前,使用GCM服務無需翻牆。筆者在中國聯通資料網路狀態下可以正常連線上Google Play服務,大部分Wi-Fi環境下也能連線,但在某些Wi-Fi之下無法連線。如果要保證GCM的全天候連線,且又不至於需要用翻牆軟體那麼繁瑣,可以嘗試修改hosts檔案。推薦hosts檔案自動修改和更新的app:Go Hosts。不過修改hosts檔案需要對手機進行ROOT。

第一步,安裝谷歌服務。可在各大應用商店搜尋谷歌安裝器應用,下載安裝後按照指示做即可。如果手機裡已經有谷歌服務框架,則無視本條。儘量保持谷歌服務為最新版本。推薦谷歌安裝器下載地址:GO谷歌安裝器

第二步,將安裝好的谷歌服務,包括Google服務框架、Google賬戶管理、Google Play服務和Play商店授予所有許可權,並允許開機自啟。如MIUI系統手機的設定位置在“安全中心”應用裡的“授權管理”中。

第三步,撥號盤輸入“*#*#426#*#*”,進入Google Play服務,在第四個按鈕STATUS/EVENTS中可檢視目前是否連線上以及連線日誌。如果是not connected即是未連線上,connecting即正在連線,出現connected並且在DeviceID後面出現一串數字後即表示連線成功。如果顯示not connected,點選第二個選項connect進行連線。

Google Play服務 注意通知欄裡的10:55時BBC推送的新聞,這是由GCM推送的 注意看10:55,這說明一次推送任務完成了

第四步,確保出現connected並且在Device ID後面出現一串數字,如果使用的Wi-Fi網路不能連線,則使用資料網路試試。根據筆者經驗,第一次連線可能會比較困難,但第一次連線上之後就沒有問題了(如果始終不能連線,請修改hosts檔案或使用翻牆軟體,方法參見延伸閱讀中筆者的另一篇指南。注意,修改hosts檔案需要ROOT,但是有的機型難以ROOT,有的機型ROOT之後依然無法修改hosts檔案,還需要解鎖System分割槽)。

第五步,如果要開啟某一個應用的GCM推送,確保它被允許開機自啟。

第六步,開啟你需要開啟GCM的應用,在應用的設定中找到訊息推送按鈕,確保它已經開啟。可嘗試關閉,再重新開啟。

至此,我們能夠做的就已經完成了。應用的GCM推送可能很快就會開始,也可能過一段時間,也許是幾天之後,但也許有的永遠也沒有推送。

歡迎各位一起使用GCM服務,誠摯地希望大家對本文提出意見。

如果遇到問題,可在評論裡直接提出。