手游渠道成百上千,相對(duì)的渠道sdk需求更是千七百怪。聚合sdk的基礎(chǔ)框架包含了手游渠道通用的大部分功能接口。但是隨著移動(dòng)設(shè)備操作系統(tǒng)的更替,ios每年一個(gè)大版本,安卓每年若干個(gè)版本,越來(lái)越多的新系統(tǒng)功能加入到了手游sdk中。相對(duì)應(yīng)的為了兼容現(xiàn)在以及將來(lái)的這些額外功能接口。我們需要設(shè)計(jì)一套針對(duì)渠道sdk額外功能兼容的模塊出來(lái)。
額外功能兼容模塊主要是用來(lái)解決通用的聚合sdk框架所不能滿足的需求。
我們對(duì)兼容模塊劃分了相應(yīng)的以下幾個(gè)子模塊
1.額外功能接口的管理框架
2.額外功能接口的統(tǒng)一繼承基類
3.對(duì)額外功能的相關(guān)配置文件
針對(duì)額外功能接口的管理框架,我們需要去實(shí)現(xiàn)以下幾個(gè)功能點(diǎn)
1.1對(duì)外提供一個(gè)統(tǒng)一的接口,可以根據(jù)函數(shù)名調(diào)用函數(shù)
1.2可以加在多個(gè)額外功能模塊,并且這些功能模塊允許存在相同函數(shù)名
1.3外部調(diào)用統(tǒng)一的接口,內(nèi)部可以同時(shí)執(zhí)行多個(gè)同函數(shù)名不同模塊的接口
1.4 對(duì)應(yīng)的有一套配置表的解析方法
針對(duì)統(tǒng)一的繼承基類
我們主要聲明一個(gè)通過(guò)函數(shù)名調(diào)用接口的函數(shù)就可以了
針對(duì)額外功能的配置文件
1.1需要知道,我們需要加在那些模塊的淚飆
1.2 單個(gè)模塊中,需要能填寫類名,以及appid,appkey等參數(shù)
1.3 單個(gè)模塊中,需要能支持額外的參數(shù)配置,比如url地址
@interface TypeSDKPlug : NSObject<UIApplicationDelegate>
{
NSMutableArray* m_pPlugArr;
NSMutableArray* m_pPlugSetArr;
}
+(TypeSDKPlug*)GetIns;
-(NSString*)DoAnyFunction:(NSString *)_funcName withArgs:(NSString *)_json_string;
我們來(lái)看下相關(guān)的代碼設(shè)計(jì)(以ios部分實(shí)現(xiàn)為例)
管理框架.h文件中的聲明
其中NSMutableArray* m_pPlugArr;是用來(lái)存儲(chǔ)額外拓展功能模塊對(duì)象的容器 NSMutableArray* m_pPlugSetArr; 是解析出來(lái)的配置文件
+(TypeSDKPlug*)GetIns;獲取管理器的單例對(duì)象方法
-(NSString*)DoAnyFunction:(NSString *)_funcName withArgs:(NSString *)_json_string; 是根據(jù)函數(shù)名來(lái)執(zhí)行額外功能模塊的主要接口在安卓中,可以通過(guò)反射來(lái)實(shí)現(xiàn)這一功能,ios中蘋果為我們提供了相關(guān)的動(dòng)態(tài)創(chuàng)建對(duì)象函數(shù)(performSelector: withObject:)
我們來(lái)看下有關(guān)的主要實(shí)現(xiàn)邏輯
2.1讀取本地的配置文件
2.2根據(jù)配置文件讀取到的額外模塊對(duì)象類名,創(chuàng)建額外模塊對(duì)象,并且將這些模塊對(duì)象存儲(chǔ)起來(lái)
2.3將讀取到的配置文件也存儲(chǔ)起來(lái)
2.4 當(dāng)調(diào)用統(tǒng)一的接口時(shí),會(huì)遍歷存儲(chǔ)在m_pPlugArr 每一個(gè)額外模塊對(duì)象,首先根據(jù)配置表查看該模塊的是否禁用該接口,然后檢查該接口在該對(duì)象中是否存在,當(dāng)存在時(shí),單獨(dú)的執(zhí)行該額外模塊對(duì)象的接口。
相關(guān)配置文件舉例
"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": ""
}
額外模塊的管理者,配置文件,和單個(gè)的額外模塊實(shí)現(xiàn)類,組成了我們sdk的額外模塊拓展和支持的主要架構(gòu)。
相關(guān)代碼大家可以到typesdk的官網(wǎng)上找到下載地址。
如果想了解更多,請(qǐng)聯(lián)系我們或關(guān)注官網(wǎng)
了解更多:www.typesdk.com
問(wèn)題解答:1771930259
聯(lián)系郵箱:qianyuzhou@typesdk.com
項(xiàng)目地址:https://github.com/typesdk
更多建議: