TYPESDK手游聚合SDK客戶端設計思路與架構之五:渠道sdk額外功能兼容性設計

2018-06-14 16:25 更新

手游渠道成百上千,相對的渠道sdk需求更是千七百怪。聚合sdk的基礎框架包含了手游渠道通用的大部分功能接口。但是隨著移動設備操作系統(tǒng)的更替,ios每年一個大版本,安卓每年若干個版本,越來越多的新系統(tǒng)功能加入到了手游sdk中。相對應的為了兼容現(xiàn)在以及將來的這些額外功能接口。我們需要設計一套針對渠道sdk額外功能兼容的模塊出來。

       額外功能兼容模塊主要是用來解決通用的聚合sdk框架所不能滿足的需求。

       我們對兼容模塊劃分了相應的以下幾個子模塊

              1.額外功能接口的管理框架

              2.額外功能接口的統(tǒng)一繼承基類

              3.對額外功能的相關配置文件

 

       針對額外功能接口的管理框架,我們需要去實現(xiàn)以下幾個功能點

              1.1對外提供一個統(tǒng)一的接口,可以根據(jù)函數(shù)名調(diào)用函數(shù)

              1.2可以加在多個額外功能模塊,并且這些功能模塊允許存在相同函數(shù)名

              1.3外部調(diào)用統(tǒng)一的接口,內(nèi)部可以同時執(zhí)行多個同函數(shù)名不同模塊的接口

              1.4 對應的有一套配置表的解析方法

       針對統(tǒng)一的繼承基類

              我們主要聲明一個通過函數(shù)名調(diào)用接口的函數(shù)就可以了

      

       針對額外功能的配置文件   

              1.1需要知道,我們需要加在那些模塊的淚飆

              1.2 單個模塊中,需要能填寫類名,以及appid,appkey等參數(shù)

              1.3 單個模塊中,需要能支持額外的參數(shù)配置,比如url地址

@interface TypeSDKPlug : NSObject<UIApplicationDelegate>
    {
      NSMutableArray* m_pPlugArr;
        NSMutableArray* m_pPlugSetArr;
    }
    
    +(TypeSDKPlug*)GetIns;

    -(NSString*)DoAnyFunction:(NSString *)_funcName withArgs:(NSString *)_json_string;

 我們來看下相關的代碼設計(以ios部分實現(xiàn)為例)

       管理框架.h文件中的聲明

其中NSMutableArray* m_pPlugArr;是用來存儲額外拓展功能模塊對象的容器       NSMutableArray* m_pPlugSetArr; 是解析出來的配置文件

       +(TypeSDKPlug*)GetIns;獲取管理器的單例對象方法

       -(NSString*)DoAnyFunction:(NSString *)_funcName withArgs:(NSString *)_json_string; 是根據(jù)函數(shù)名來執(zhí)行額外功能模塊的主要接口在安卓中,可以通過反射來實現(xiàn)這一功能,ios中蘋果為我們提供了相關的動態(tài)創(chuàng)建對象函數(shù)(performSelector:  withObject:)

      

       我們來看下有關的主要實現(xiàn)邏輯

              2.1讀取本地的配置文件

              2.2根據(jù)配置文件讀取到的額外模塊對象類名,創(chuàng)建額外模塊對象,并且將這些模塊對象存儲起來

              2.3將讀取到的配置文件也存儲起來

             

              2.4 當調(diào)用統(tǒng)一的接口時,會遍歷存儲在m_pPlugArr 每一個額外模塊對象,首先根據(jù)配置表查看該模塊的是否禁用該接口,然后檢查該接口在該對象中是否存在,當存在時,單獨的執(zhí)行該額外模塊對象的接口。

             

 

       相關配置文件舉例

"PlugList": [
{
"plug_id": "1",
"plug_name": "chartboost",
"plug_class_name": "Plug_chartboost",
"plug_class_data": "null",
"plug_app_key": "123",
"plug_app_key_extra": "",
"plug_app_id": "456",
"plug_app_id_extra": "",
"plug_local_data": "null",
"plug_local_data_extra": "null",
"plug_show_regular": "null",
"plug_supports": "null",
"plug_requires": "null",
"plug_function_list": [
{
"plug_function_name": "func1",
"plug_function_right": "0",
"plug_function_arg_value": "",
"plug_function_arg_type": ""
}

 額外模塊的管理者,配置文件,和單個的額外模塊實現(xiàn)類,組成了我們sdk的額外模塊拓展和支持的主要架構。

       相關代碼大家可以到typesdk的官網(wǎng)上找到下載地址。


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

了解更多:www.typesdk.com

問題解答:1771930259

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號