文/陳雄華 張謀東 孫照波
目前移動平臺開發主要是APP開發、移動WEB開發、小程序的開發。APP主流開發運行于Android操作系統和iOS兩大操作系統,分別使用兩大操作系統提供的技術棧進行開發;移動WEB開發使用傳統WEB技術棧。小程序開發運行于各大廠商移動宿主APP平臺上,目前分別有微信小程序、頭條小程序、支付寶小程序、百度小程序、QQ小程序。各大廠商的技術棧和開發工具不統一,差異明顯。
當需要開發一個需要發布到不同平臺的應用時,如果不使用跨平臺開發技術,將需要在多個端使用不同的技術棧分別進行開發和發布。慶幸的是,已經有一些移動跨平臺技術可供選擇,可以最大程度上做到編寫同一套代碼和功能,發布到不同的移動平臺上!
我們在選擇合適移動跨平臺的基礎上,根據自身業務場景和已有應用基礎平臺平臺功能,設計了通用整合方案,形成一套基礎軟件平臺的移動應用開發框架,滿足移動跨平臺開發的需求,提升移動開發效率。當需要開發一個新的移動應用時,只需在移動應用開發框架的基礎上進行業務模塊開發,即可實現多平臺的應用發布。
在基礎軟件平臺的基礎上,使用uni-app作為平臺的移動應用開發框架,通過平臺端和移動端的功能模塊設計和開發,形成一套基礎軟件平臺的移動應用開發框架,使基于平臺業務的多端應用開發更加容易。如圖1所示。

圖1
整個移動應用開發框架包括了平臺端和移動端兩部分,平臺端功能包含了移動應用配置和移動開放開發接口。移動端包括平臺對接、通用頁面組件及可用的模板頁面,同時還提供了移動開發的開發規范。項目開發者可以直接通過配置化配置定制頁面組件,也可以在模板頁面基礎上進行定制化開發,即可快速開發出與基礎軟件平臺對接的跨平臺移動應用出來。
平臺端主要負責多端應用的注冊、權限及監管,同時提供一套供移動端使用的平臺開發接口,移動端通過平臺開發接口實現與平臺的對接整合。
平臺端需要對移動應用的生命周期(注冊-發布-升級)進行管理。在移動應用運行時,平臺端需要管理應用的權限和菜單,對接移動應用和第三方服務。同時,開發框架還需要對移動應用的運行情況進行監控。模塊包括應用注冊管理、菜單管理、應用權限管理、應用對接管理、版本升級管理、應用運行管理。
3.1.1 應用注冊管理
為了實現移動應用的生命周期管理及移動應用生產環境客戶具化配置,基礎平臺需要對移動應用進行統一的注冊管理,為每個應用提供平臺唯一ID和名稱。應用注冊管理包括移動應用ID、名稱、描述等基本信息,還包括生產環境下應用對接的具體配置信息,如對于微信應用來說,需要配置微信公眾號ID、信息加密密鑰,對于微信企業號應用來說,需要配置通訊錄同步方式、通訊錄消息重密鑰。
3.1.2 應用菜單管理
每個應用都有一套對應的功能菜單,為實現應用功能名稱、圖標、地址等信息的靈活調整,移動應用管理后臺提供了應用菜單注冊的功能。移動端通過菜單組件通過指定菜單分枝的編碼即可展現特定分枝的菜單。此外,可通過基礎軟件平臺的用戶崗位權限進行不同崗位不同應用菜單權限的分配,實現移動應用人員權限的平臺總控。
3.1.3 應用對接管理
當移動應用發布成公眾號/企業號應用時,需要集成在微信的環境中,平臺端就作為移動應用和微信環境中間的橋梁,一方面與微信環境進行對接功能,一方面對接移動應用保證應用能在微信環境下正常運行。
公眾號/企業號應用入口是基于微信的3×5經典菜單,需要點擊微信的3×5經典菜單,才能進入我們的移動應用,所以平臺端支持和微信服務器進行交互,來創建和配置微信3×5菜單。
企業號通訊錄和平臺系統用戶是獨立的兩套用戶數據,需要通過通訊錄同步建立兩者的關聯。這樣,當企業號用戶進入企業號的應用時即可創建平臺的用戶會話,完成用戶權限的控制。
3.1.4 版本升級管理
當移動應用可發布成APP端應用時,當版本更新時手機端需要重新安裝APP應用,因此平臺提供了移動應用版本升級的管理功能。手機端本地應用和平臺端都存有當前移動應用的版本號,如果沒有升級的需求,那么手機端本地應用和平臺端的版本號是一致的。當需要升級時,平臺端配置移動應用的新版本號,并上傳安裝包或者應用商店的鏈接(鏈接指向發布到Android或者iOS應用商店的安裝程序)。手機端本地應用不斷和平臺端的版本號進行對比,發現版本號不一致時,就從平臺端獲取應用安裝的地址,進行重新安裝。
3.1.5 應用監控管理
移動應用在用戶使用和交互的過程中,會產生用戶行為和使用軌跡的信息,這些信息有助于分析移動應用、功能使用情況和分析用戶行為。移動應用在運行期間,向平臺端發送用戶進行登錄、菜單點擊、功能使用等操作信息,平臺端將信息分類進行存儲,并提供統計分析頁面來監控應用數據。
平臺端開放接口給移動端調用,來完成基本信息的交互和基礎功能的實現。包括認證服務、用戶管理服務、會話保持、用戶菜單權限服務、日志上報服務、應用升級等模塊。
3.2.1 登錄認證服務
登錄的用戶來源于平臺端用戶信息,平臺端作為移動端后臺管理用戶信息。移動應用用戶登錄調用平臺端開放接口進行認證。登錄方式應支持用戶名/密碼登錄和手機/驗證碼登錄,其中敏感信息密碼進行加密處理。
3.2.2 用戶管理服務
登錄用戶有時會有忘記密碼、修改密碼、修改用戶信息的需求,開發框架移動端應支持相應功能,平臺端應提供相應開放接口來管理相關信息。當移動應用發布成公眾號或者企業應用的時候,應用的用戶來源于微信用戶而非平臺端系統用戶,這就需要將平臺端系統用戶和微信用戶進行關聯綁定。公眾號的用戶綁定需要移動端主動發起,調用平臺端提供的接口將微信用戶openId與平臺端系統用戶綁定。而企業號的用戶綁定由平臺端手動操作完成,無需移動端調用接口實現。當微信用戶和平臺端用戶綁定后,就可以以平臺用戶的身份使用公眾號或企業號應用。
3.2.3 會話保持
用戶登錄后,平臺端會生成該用戶的會話信息和上下文,并將會話信息提供給移動端,這樣移動端就持有當前用戶的會話信息,后續向服務器發送的請求就可以攜帶當前用戶會話信息,平臺端會根據會話上下文關聯當前用戶,提供基于當前用戶的各種數據和操作。
3.2.4 用戶菜單權限服務
為了讓移動端的菜單在運行期可動態修改菜單信息,如修改菜單標題或圖標、刪除菜單、添加菜單等操作。所有移動端的菜單信息全部配置在平臺端,就可以實現運行期動態修改菜單信息。移動端在運行期間,所有菜單信息都通過平臺端提供的接口進行獲取,并根據當前用戶角色和權限對菜單進行過濾。
3.2.5 日志上報服務
平臺端提供日志上報接口,可以用來統計應用使用的情況。主要采集用戶登錄和菜單使用的相關數據。
平臺端會收集用戶當前應用和機器信息,用作統計和相關功能的使用。比如統計Android和iOS用戶的分布和使用,clientId用來注冊APP推送等。
3.2.6 應用升級
當移動應用發布到APP端,是基于本地應用的C/S模式,當應用需要升級時,需要重新安裝本地應用。是否升級的判斷基于版本號,移動應用調用開放接口獲取應用當前版本號和應用安裝鏈接,與移動應用本地版本號進行對比。發現有新版本后,通過應用安裝鏈接來重新安裝應用。
移動端框架基于uni-app技術棧進行功能擴展,滿足跨平臺和統一技術棧的需求。作為開發框架,需要為實際開發提供基礎的模板和功能,這樣業務系統的移動端開發就可以在此基礎上進行二次開發,只需開發與業務直接相關的功能。發框架還需要為實際開發提供包裝過的CSS樣式和頁面快速開發的例子頁面,業務系統移動端開發可以參考該項目的頁面效果,找到相應源碼拷貝使用,大大提升頁面開發效率。
業務系統開發就有了開發框架的支持,在實際的業務系統移動端開發中,將開發框架源碼拷貝到自己業務的移動端項目中進行二次開發。在開發中頁面部分還可以參考開發框架中的例子頁面快速開發頁面,在功能開發中可以參考開發框架中基礎功能的實現快速開發功能。
平臺端接口對接模塊基于HTTP請求,與平臺端的服務接口進行對接,把功能對接和數據處理邏輯封裝成相應JavaScript的API,簡單調用API即可完成復雜的接口調用。
開發框架首先要對實際業務移動端開發提供編程標準規范,使代碼能夠統一標準,方便管理,提高可讀性和開發效率。在目錄規范中,需要規定框架的代碼放在同一目錄中,和業務移動端開發的代碼進行解耦,方便升級和源碼組織。業務代碼也需按照開發框架規范的目錄進行組織,方便源碼的管理。在系統變量管理(vuex)中,開發框架需要規范系統變量的組織方式,業務移動端開發遵循規范方便系統變量的統一組織管理。在api規范中,開發框架需要規范api文件和方法的組織方式,以及需要放置于相應目錄下,方便代碼管理和提升開發效率。
uni-app有提供全局的樣式風格,但是樣式不夠美觀,不夠豐富。所以,開發框架需要提供一套更美觀,更豐富的統一樣式風格的css,并提供足夠的css和例子頁面展現。業務移動端開發可以使用開發框架提供的css,參考例子頁面,快速開發美觀、風格統一的頁面。
開發框架需要提供一些基礎頁面的模板實現,使業務移動端開發只需關注業務功能的開發。模板頁面包括登錄頁、主頁和菜單加載、微信綁定頁面、消息中心、個人中心等的默認頁面和功能實現,業務系統移動端做二次開發時可以在默認實現上進行微調和功能定制擴展實現。
頁面組件是可復用的vue組件,封裝了可復用的頁面展現和功能。開發框架提供了一些可復用基礎功能的頁面組件,包括圖片上傳、加載loading、導航欄、菜單組件、菜單搜索組件、流程待辦列表、流程流轉等。業務系統移動端開發頁面功能時,可以直接使用這些基礎組件直接復用組件的展現和功能。
本文對移動應用開發框架進行了介紹和設計剖析,指出了移動應用開發框架產生的原因和最終的目的。通過移動應用開發框架,解決了跨平臺的難題,統一了開發的技術棧,集成了框架該有的基礎功能,為業務系統移動端開發提供了集成解決方案。在移動應用開發框架的基礎上,進行二次開發和參考,可以大大提升開發效率,快速開發高質量的業務移動應用。