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

引言:本文旨在提供讀者製做一個本身的聚合sdk的思路,拋磚引玉,讓更多的讀者對聚合sdk有更好的理解。ios

       手遊渠道成百上千,相對的渠道sdk需求更是千七百怪。聚合sdk的基礎框架包含了手遊渠道通用的大部分功能接口。可是隨着移動設備操做系統的更替,ios每一年一個大版本,安卓每一年若干個版本,愈來愈多的新系統功能加入到了手遊sdk中。相對應的爲了兼容如今以及未來的這些額外功能接口。咱們須要設計一套針對渠道sdk額外功能兼容的模塊出來。git

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

       咱們對兼容模塊劃分了相應的如下幾個子模塊json

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

              2.額外功能接口的統一繼承基類app

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

       針對額外功能接口的管理框架,咱們須要去實現如下幾個功能點函數

              1.1對外提供一個統一的接口,能夠根據函數名調用函數ui

              1.2能夠加在多個額外功能模塊,而且這些功能模塊容許存在相同函數名url

              1.3外部調用統一的接口,內部能夠同時執行多個同函數名不一樣模塊的接口

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

       針對統一的繼承基類

              咱們主要聲明一個經過函數名調用接口的函數就能夠了

       針對額外功能的配置文件   

              1.1須要知道,咱們須要加在那些模塊的淚飆

              1.2 單個模塊中,須要能填寫類名,以及appid,appkey等參數

              1.3 單個模塊中,須要能支持額外的參數配置,好比url地址

 

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

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

  

       咱們來看下相關的代碼設計(以ios部分實現爲例)

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

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

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

       -(NSString*)DoAnyFunction:(NSString *)_funcName withArgs:(NSString *)_json_string; 是根據函數名來執行額外功能模塊的主要接口在安卓中,能夠經過反射來實現這一功能,ios中蘋果爲咱們提供了相關的動態建立對象函數(performSelector:  withObject:)

       咱們來看下有關的主要實現邏輯

              2.1讀取本地的配置文件

              2.2根據配置文件讀取到的額外模塊對象類名,建立額外模塊對象,而且將這些模塊對象存儲起來

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

              2.4 當調用統一的接口時,會遍歷存儲在m_pPlugArr 每個額外模塊對象,首先根據配置表查看該模塊的是否禁用該接口,而後檢查該接口在該對象中是否存在,當存在時,單獨的執行該額外模塊對象的接口。

       相關配置文件舉例

點擊(此處)摺疊或打開

"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": ""
}

  

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

       相關代碼你們能夠到typesdk的官網上找到下載地址。

    這個項目已開源,你們有興趣能夠本身研究或者參照項目編寫本身的聚合SDK
    項目地址:https://code.csdn.net/typesdk_code
    項目地址:https://github.com/typesdk

相關文章
相關標籤/搜索