苦逼房奴一枚
全部博文(65)
分类: Android平台
2017-02-17 16:54:39
引言:本文旨在提供读者制作一个自己的聚合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地址
点击(此处)折叠或打开
我们来看下相关的代码设计(以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 每一个额外模块对象,首先根据配置表查看该模块的是否禁用该接口,然后检查该接口在该对象中是否存在,当存在时,单独的执行该额外模块对象的接口。
相关配置文件举例
点击(此处)折叠或打开
额外模块的管理者,配置文件,和单个的额外模块实现类,组成了我们sdk的额外模块拓展和支持的主要架构。
相关代码大家可以到typesdk的官网上找到下载地址。
这个项目已开源,大家有兴趣可以自己研究或者参照项目编写自己的聚合SDK
项目地址:
项目地址: