基於HUAWEI AppGallery Connect的移動開發新嘗試

移動開發市場一直以來都被 iOS 和Android所壟斷,但近年來得益於國內智能手機的蓬勃發展,國產移動應用市場也有了長足的進步,但這些市場大多以消費者爲導向 ,對開發者提供的服務有限 。在綜合考慮了硬件用戶基數、雲後端功能支持、開發者友好度等因素的基礎上,本文最終選擇了華爲應用市場 AppGallery Connect作爲這次的測試對象。

1. 華爲應用市場 AppGallery Connect

AppGallery Connect,又簡稱AG Connect,是針對開發者推出的一站式創意、開發、分發、運營到分析的應用全生命週期服務。這項服務於2019年4月18日正式上線,到目前爲止,它已經歷了多個版本的迭代,服務功能也一直在不斷增強和優化。以最新10.5版本爲例,它已累計爲160多萬開發者開放了67項服務,覆蓋了全球170多個國家和地區。

自創立伊始,AG Connect就把開發者體驗放在首位,並結合華爲應用市場以及其背後強大的設備終端,致力於爲開發者提供應用創意、開發、分發、運營、分析等全生命週期服務,構建全場景智慧化的應用生態,使開發者能夠真正將重心放到自身業務的發展上。[1]

技術上,AG Connect採用了當前最流行的Serverless(無服務器)架構,即將服務器管理、操作系統管理、資源調配,甚至是應用邏輯都集成爲服務,開發者可以直接通過API接口來調用後端的各種能力實現。依託華爲強大的雲平臺,開發者可以通過端雲協同框架快速集成如帳號 、支付、消息推送等功能,同時可以整合雲函數、雲存儲、雲數據庫等公有云服務,極大減少了重複開發及後臺運維管理工作,真正實現了雲原生開發與應用的快速上線。

下一步,我們將重點關注AG Connect的用戶認證和雲數據庫服務,通過深入的分析和測試來全面體驗AG Connect的快捷便利。

2. 測試目標

本文將結合AG Connect提供的示例代碼,在Android平臺中構建一個簡易的圖書管理系統。該系統支持匿名帳戶、微信用戶認證以及短信驗證碼雙重認證。數據庫採用了最新的雲數據庫服務,不僅支持多種控制權限設置,而且可以自動實現不同設備之間的數據同步。雲數據庫提供離線化支持,離線狀態下依然可用,並且在系統上線後會第一時間與雲端數據完成同步。

3. 認證服務

一款好的App軟件一般都需要有一個可靠的身份認證和權限驗證功能。這一功能非業務核心但相信很多開發者都曾爲之頭疼。爲了給用戶創造一個安全便捷的應用登錄體驗,開發者不僅需要花費大量的開發精力,而且在很多情況下還要負擔額外的資源,如服務器、數據庫等。AG Connect的認證服務則很好地解決了這一問題。

3.1 功能特點

AG Connect認證服務提供了雲側服務和SDK,我們只需要在應用客戶端簡單調用雲端API,就可以輕鬆實現用戶註冊、登錄等功能。該服務同時支持包括手機、郵箱、華爲帳號 、國內外主流第三方帳號 、匿名帳號等在內的多種帳號認證, 認證服務也提供了自有帳號來允許開發者實現認證服務尚未支持的其他認證方式 。在跨平臺支持方面,認證服務提供了Java以及Objective-C兩種版本的SDK,用戶無論使用哪種設備,都可以獲得統一的認證體驗。可以說該服務爲開發者提供了一套安全、低成本、免運維、多帳號支持的身份驗證解決方案。

3.2 工作原理

1、移動端獲取認證憑證:

a.對於第三方帳號認證,認證憑據是第三方認證服務頒發的OAuth令牌。
b.對於匿名帳號 ,認證憑據是端側SDK爲該應用安裝實例生成的唯一標識。
c.對於自有帳號 ,認證憑據是您已有認證系統通過Server SDK生成Token。

2、認證服務SDK上報認證憑據到雲端

3、雲端驗證憑據

4、返回認證結果

5、至此,用戶可以在移動端進行權限範圍內的相關操作

3.3 源碼測試

1、在AG Connect上開通認證服務

登錄 AG Connect,點擊“我的項目”,然後在項目列表中找出當前的項目。點擊“構建 > 認證服務”,進入認證服務的頁面,從而開通該服務。(如何構建項目,請參考此處)

圖1 AG Connect認證服務

2、"啓用"所需要的認證方式
本文選擇匿名帳號 、微信以及手機認證方式,其它方式請參考開發文檔。

圖2 AG Connect認證服務中認證方式選擇

以上爲雲端設置,接下來將進入移動端的設置及開發。在開始前請確定已在AndroidStudio中集成了AG Connect的SDK, 詳情參閱此處。

3、匿名帳號登陸

4、微信帳號認證
發送請求獲取微信授權的code

在onResp(BaseResp baseResp)中接收授權後的code

上述代碼最終生成了如下請求來獲取accessToken和openId:

微信帳號授權AppGallery Connect,由AppGallery Connect來提供AppGallery Connect的用戶信息

至此,客戶端可以使用 getCurrentUser 方法獲取用戶帳號數據

5、短信驗證碼推送(可直接選擇手機帳號認證,或單獨選擇此功能同其它登錄方式綁定)

申請手機註冊的驗證碼:

獲取驗證碼

上述代碼匯中,如果credentialWithVerifyCode()中輸入了密碼,則啓用密碼和驗證碼的雙重驗證。獲取credential成功後,進入登錄函數。

3.4 總結

到這裏,我們的認證服務就構建完成了。筆者曾試圖開發過自己的用戶認證系統,說實話整個過程可以用慘烈來形容,用戶權限設置、密碼加密、信令交互、三方認證等等,每一項都讓人極度崩潰。反觀這裏的構建過程,客戶端SDK完成了絕大部分的功能實現,我們只是在雲端選擇所需的功能,然後進行簡單的組裝,整個過程方便快捷。

4. 雲數據庫服務

相信對於移動開發者來說,數據庫是核心業務之外的另一個開發痛點。首先,數據管理對安全性的要求絲毫不亞於用戶認證;其次,數據訪問常常會成爲APP的性能瓶頸,尤其是高併發訪問的情況,這也是很多大型應用都要求業務數據分離的原因;最後,數據的事務處理以及同步也讓很多人望而生畏。如果說有一項服務可以很好解決這些問題,相信很多人都會樂意嘗試。所以在AG Connect發佈該服務後,筆者第一時間進行了申請測試。(注:雲數據庫是10.5版本中的新增的一項服務,目前尚未對外公測,有興趣的開發者可參考此處申請試用。)

4.1 功能特點

AG Connect雲數據庫是一款端雲協同的數據庫產品,提供端雲數據的協同管理、統一的數據模型和豐富的數據管理API接口等能力。在保證數據的可用性、可靠性、一致性,以及安全等特性基礎上,能夠實現數據在客戶端和雲端之間的無縫同步,併爲應用提供離線支持,以幫助開發者快速構建端雲、多端協同的應用[2]。

更多AG Connect雲數據庫的參數指標請參考此處。

4.2 工作原理

圖3 產品架構圖

作爲一款端雲協同的產品,AG Connect雲數據庫的移動端採用了Android編程接口,可以方便開發者快速上手。它基於認證服務實現了權限管理 ,並提供了傳輸通道加密等安全機制 ,並負責數據的動態同步,不僅可以對服務端通信,還能對其它移動端進行平級通信,最後對本地數據讀寫追加了加密操作,進一步保證了產品的安全性。

與移動端對應,其雲端同樣實現了相應的安全、同步、存儲以及通信管理機制,而且在此之上還增加了一個OM控制平臺,可以方便對數據庫系統進行監控、維護、安裝以及升級等。

AG Connect雲數據庫有緩存和本地兩種數據同步模式。緩存時,本地數據只是作爲雲端數據的緩存,最終寫入操作將在雲端進行。開發者也可以選擇本地方式,這樣數據只存在本地而不會同雲端產生任何交互,這主要是針對離線操作的場景,可以保證終端用戶的離線使用體驗。

4.3 源碼測試

1、開通雲數據庫服務
登 錄 AG Connect,選擇“我的應用”,並在“構建 > 雲數據庫”下開通服務(如何構建我的應用,請參考此處。)

2、雲端創建數據
創建對象類型 “BookInfo”

創建如下字段

創建索引名“bookName”

設置如下角色權限

創建存儲區QuickStartDemo

3、客戶端配置,初始化雲數據庫並創建對象類型和Cloud DB zone配置文件,同步方式選擇緩存模式

4、客戶端向雲端寫入數據

5、客戶端偵聽數據,當雲側數據發生變化時,客戶端能夠感知變化,並隨時接收數據完成更新

4.4 總結

到這裏,一個簡單的雲數據庫就構建完成了(更復雜的操作設置請參閱此處)。在操作邏輯上,我們不難發現雲數據庫同傳統數據庫基本保持了一致。開發者可以通過API接口快速實現對存儲區數據的增、刪、改、查、數據偵聽等操作。對於該功能的體驗,除了簡單快捷,筆者其實更驚訝於其背後華爲雲的支持能力,數據同步和安全自然不必說,高併發高可用乃至基於多區域數據複製的容災支持等能力,這都爲該服務的擴展提供了無限可能。

5. 結語

至此,我們對用戶認證和雲數據庫的初步測試就結束了。整個構建過程充分體現了其無服務器模式的設計理念。無論是之前的用戶認證和雲數據庫服務,還是雲函數、雲存儲等其它服務,都可以讓開發者直接通過華爲雲託管實現,保證了數據的可靠性、服務的可用性和系統的安全性。

而這所有的一切又秉承着同一個核心目標:幫助開發者簡化開發流程、提升開發效率、快速構建應用。在構建應用時,開發者們可根據自身需求選擇某一種服務,也可以將幾種服務結合起來使用,從而達到開發效率最大化,文件數據安全化以及成本最低化。

相信隨着華爲硬件終端和雲平臺的不斷髮展,AG Connect在未來的表現將更加出色。

參考文獻:

[1]https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-introduction

[2]https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-introduction

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章