TYPESDK手游聚合SDK客戶端設計思路與架構之二:安卓平臺統(tǒng)一化接口結構及思路

2018-06-14 16:03 更新

在上一篇《TypeSDK聚合sdk設計基本原則》中我們提到了,設計聚合sdk需要設計開發(fā)平臺部分的接口,以及設計發(fā)布平臺的聚合這2個大模塊。那么我們今天就先來講講發(fā)布平臺之一:安卓平臺的統(tǒng)一化接口結構和思路。

一、相關的需求

       安卓平臺的統(tǒng)一化接口,我們需要考慮到具體以下的幾點:

       1.對外需要有統(tǒng)一的接口,保證不同的渠道sdk 對同一個游戲來說,是調(diào)用相同的接口,傳遞相同的參數(shù)

       2.對內(nèi)需要有一套擴展性很好的框架,可以應對不同渠道的sdk差異性

二、設計的模塊

       那么針對這些考慮點,安卓平臺的統(tǒng)一化接口,我們將主要分成以下幾個部分來設計:

       1.基礎架構設計

       2.具體渠道實現(xiàn)類

       3.統(tǒng)一化對外平臺接口

       4.跨平臺交互的設計

三、具體的細節(jié)

       1.統(tǒng)一化的基礎架構

       針對統(tǒng)一化的基礎架構,我們主要設計了以下的一個主體框架

我們主要實現(xiàn)了這么一套結構

1.我們創(chuàng)建通用的基礎抽象類(BaseActivity)。

       該類中,包含了所有sdk都有,但是實現(xiàn)不同的接口,這些接口作為抽象函數(shù),要求每個渠道的具體實現(xiàn)類都去實現(xiàn)。

       1.1 初始化接口:void init()

       1.2 登錄接口: void login()

       1.3 登出接口:void logout()       1.4 支付接口:string pay(string _json_string)

       1.5 提交玩家數(shù)據(jù):void updatePlayerInfo( string _json_string)

       1.6顯示用戶中心: void showPlayerCenter()

       1.7 大退游戲(殺進程):void exit game();

       1.8 顯示分享 void showShare(string _json_string)

       還需要通用的抽象接口,用作sdk框架的拓展

       1.9 根據(jù)函數(shù)名,調(diào)用具體實現(xiàn)類中的函數(shù):

       string DoAnyFunction(string _function_name,string _json_string)

       我們還包含了通用固定實現(xiàn)的接口,用作sdk框架的補充

       1.10.獲取本地渠道的配置:string getPlatfromInfo()

       1.11.獲取緩存在安卓層的用戶信息:string getUserInfo()

2.我們根據(jù)每一個渠道的sdk不同,單獨創(chuàng)建每個渠道自己的實現(xiàn)類Bonjour_xx。

       2.1 這個類繼承通用的框架基類(BaseActivity)。

       2.2 在該框架下,實現(xiàn)基類所有的抽象接口。如果沒有該接口的功能,也需要做出相應的處理,例如輸出log日志。

       2.3 同時該類可以增加渠道自有的特殊接口(例如獲取好友列表)

3.發(fā)布平臺有一個統(tǒng)一的給外部調(diào)用接口實現(xiàn)的類:mainActivity

       3.1.mainActivity給unity調(diào)用時,需要繼承UnityPlayerActivity。在給cocos2dx調(diào)用時,需要繼承Cocos2dxActivity。我們的主要目的是給游戲的開發(fā)平臺調(diào)用,就是說,游戲開發(fā)平臺是哪個,那我們就需要寫這么一個給其調(diào)用的mainActivity。

       3.2 mainActivity中需要統(tǒng)一化對外的接口名字,并且在每個接口中,使用 bonjour_xx的實例對象,來實現(xiàn)具體接口的業(yè)務邏輯

       3.2 mainActivity中需要能夠讓開發(fā)平臺(unity/cocos2dx)需要使用 bonjour_xx來調(diào)用基類的通用拓展的函數(shù)

4.跨平臺交互部分

       跨平臺交互我們需要考慮兩個方面

              a.如何將從發(fā)布平臺調(diào)用開發(fā)平臺函數(shù)

              b.如何將從開發(fā)平臺調(diào)用發(fā)布平臺函數(shù)

       1.在安卓層,我們只需要將需要給到unity調(diào)用的函數(shù),寫在之前提到過的mainactivty中,在unity中,可以直接通過函數(shù)名來調(diào)用mainactivity的函數(shù)

       2.在unity層,提供了我們通用的跨平臺調(diào)用接口

       void UnitySendMessage(string beheaver_name, string function_name, string json_string );

       我們只需要知道unity部分用來接收消息的腳本名字,需要執(zhí)行的腳本函數(shù)名,以及傳遞的參數(shù),就可以調(diào)用unity的響應函數(shù)了。

       綜上安卓向unity平臺傳遞數(shù)據(jù)和調(diào)用函數(shù),主要通過消息機制發(fā)送消息

       unity向安卓平臺傳遞參數(shù)和調(diào)用函數(shù),則通過函數(shù)名,用反射來調(diào)用mainActivity里的接口。

       以上就是我們安卓發(fā)布平臺的聚合sdk設計思路細節(jié),下一章我們將講述ios聚合sdk的設計思路細節(jié)。


如果想了解更多,請聯(lián)系我們或關注官網(wǎng)

了解更多:www.typesdk.com

問題解答:1771930259

聯(lián)系郵箱:qianyuzhou@typesdk.com

項目地址:https://github.com/typesdk


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號