使用Android Studio、Google App Engine建置雲端訊息推撥(二) backend模組與Android

By | 2016-07-19

使用Android Studio加入後台backend雲端訊息模組後,在這個專案中即擁有了一個Google App Engine模組,可以在這個環境中測試、開發,最後,只需要一個動作就可以佈署到雲端上,成為一個擁有完整域名的伺服器。首先,我將介紹這個模組自動產生了什麼? 之後在Android專案中實作GCM的規格與類別。

本文章是接續「使用Android Studio、Google App Engine建置雲端訊息推撥(GCM) (一)」,請先自行實作後,再進行本篇內容。

http://litotom.com/2016/06/05/android-gae-gcm-1/

backend模組

backend模組是由Android Studio自動產生的,因為選擇了「App Engine backend Module for Google Cloud Messaging」,針對雲端訊息功能需求也自動產生如下圖的類別:

A6237

RegistrationEndpoint類別

目的是能讓手持裝置可以連上來註冊它的RID,此類別中有三個方法,註冊時呼叫registerDevice方法,而它的對外服務名稱為「register」,如下圖的標示name值:

A6238

RegistrationRecord類別

代表一個註冊資料的類別,其內部只有一個屬性regId。

MessagingEndpoint類別

目的是提供傳送雲端訊息的呼叫介面

OfyService類別

能夠將手持裝置的RID儲存在Google App Engine的Datastore雲端資料庫的類別,使用「Objectify」類別庫達成簡化程式碼的目的

Android專案

GCM的權限設定

自動幫AndroidManifest.xml加入雲端訊息必要的權限

A6243

上圖中的最後兩個個權限的android:name屬性值要修改為

“Package名稱.gcm.permission.C2D_MESSAGE"

專案的gradle

在專案層級的build.gradle(Project:專案名稱)設定檔中,導入Google Play Services類別庫,如下:

雲端推播訊息接受器

在AndroidManifest.xml中的application元素內加入

雲端推播訊息傾聽服務

設計一個新類別,繼承GcmListenerService,如下:

並在AndroidManifest.xml中加入service宣告元素

設計RegistrationIntentService

建立一個新類別,繼承IntentService,並覆寫onHandleIntent方法:

在AndroidManifest.xml中加入service宣告元素

設計InstanceIDListenerService

建立一個新類別,繼承InstanceIDListenerService,並覆寫onTokenRefresh方法:

在AndroidManifest.xml中加入service宣告元素

取得Instanct ID

在合適的Activity類別(如MainActivity)的onCreate方法中,以手動方式啟動RegistrationIntentService:

執行APP後,當RegistrationIntentService啟動後,取得InstanceID的token值,如下圖:

token

上述工作是Google Cloud Messaging的設計,但自從Firebase被Google收購後,2016年的Google IO開發者大會上,Google發表了新版的Firebase,其中最具亮點的一項新功能就是「Firebase Cloud Messaging」雲端訊息,它可以用較快速的方式設計雲端推播訊息,適合較輕量的需求。

唯實務中若要設計客製化,或加入運算、比對、檢查時,還是需要建置自己的伺服器,但仍可將部份工作以Firebase實作,可減少部份的開發成本。

取得Registration Token後呢?

此時,一般開發流程應實作好一個用PHP、Node.js或ASP等的HTTP伺服器端服務,接收Android端傳來的token後儲存在後端資料庫。

幸運的是,使用Google App Engine可以簡化這些複雜的工作,接下來就是Google Cloud Endpoint重頭戲,我們的前端是Android,而後台backend是Google App Engine,它們是「異質」系統,兩個不同的平台。一般來說,後台要設計HTTP服務,訂定參數規格,將規格交給前端的開發人員,而前端可能是Android,也可能是iOS或是Web app。這個繁複的設計、互動工作,沒花掉一兩天,也得要數小時。

在Google App Engine中可以設計Cloud Endpoint,讓這類工作縮少到只要數分鐘就可以完成,包括後台服務介面設計與前端的呼叫程式碼。

相關文章:

2 thoughts on “使用Android Studio、Google App Engine建置雲端訊息推撥(二) backend模組與Android

    1. Hank Tom Post author

      後續因為需要Google App Engine、Google Cloud Endpoint等知識後,才能把整個服務完成,有興趣可以先找一下上述的兩種服務相關知識,應該就能實作出來了。

      Reply

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *