手游渠道成百上千,相對的渠道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
更多建議: