TYPESDK手游聚合SDK客户端设计思路与架构之五:渠道sdk额外功能兼容性设计

引言:本文旨在提供读者制作一个自己的聚合sdk的思路,抛砖引玉,让更多的读者对聚合sdk有更好的理解。

       手游渠道成百上千,相对的渠道sdk需求更是千七百怪。聚合sdk的基础框架包含了手游渠道通用的大部分功能接口。但是随着移动设备操作系统的更替,ios每年一个大版本,安卓每年若干个版本,越来越多的新系统功能加入到了手游sdk中。相对应的为了兼容现在以及将来的这些额外功能接口。我们需要设计一套针对渠道sdk额外功能兼容的模块出来。

       额外功能兼容模块主要是用来解决通用的聚合sdk框架所不能满足的需求。

       我们对兼容模块划分了相应的以下几个子模块

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

              2.额外功能接口的统一继承基类

              3.对额外功能的相关配置文件

       针对额外功能接口的管理框架,我们需要去实现以下几个功能点

              1.1对外提供一个统一的接口,可以根据函数名调用函数

              1.2可以加在多个额外功能模块,并且这些功能模块允许存在相同函数名

              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

posted on 2017-02-17 17:12  老海贼  阅读(475)  评论(0编辑  收藏  举报

导航