LT SDK聚合抽象层框架设计

渠道sdk一般都有初始化,登录,登出,退出,支付,上传角色等接口。除了渠道SDK外,还需要把广告SDK,分享SDK,统计SDK,消息推送SDK等都放到了这套统一SDK接入框架中来了。那么,作为我们这套抽象框架,我们也需要考虑以后可能会加入这些其他非渠道的SDK。所以,我们总体的设计思想是:

1、游戏各个渠道有一个主渠道SDK,比如UC,当乐,91等SDK。这个各个渠道只能同时有一个。不可能同时为UC也是91SDK

2、非渠道的功能性SDK,包括广告,分享,统计,推送等。这些东西,我们作为插件集成到这套抽象框架来。

3、所有SDK的实现可以很方便,而且结构比较统一

4、所有的渠道SDK也好,还是功能性SDK也好,SDK抽象层都抽象出对应的接口。方便游戏层的调用,也方便具体插件的实现。

有了前面的总体思路,那么我们来看看具体抽象层实现。首先我们定义一个渠道规范接口:

public interface ILTSdk {

   
void login(Activity activity, ILTLoginListenerlistener);//登录接口

   
void pay(Activity activity, PayParamsdata, ILTPayListener listener);//支付接口接口

   
void logout(Activity activity, ILTLoginListenerlistener);//登出接口

   
void exit(Activity activity, ILTExitListenerlistener);//退出接口

   
void setExtData(Activity activity,Stringdata);//上传角色接口
}

 

这里说明一下,初始化接口这里不对外提供,将在抽象层内部实现,不提供初始化的结果。登录,支付,退出接口都是有结果回调的,后面将会通过监听形式返回。关于支付需要传递的参数,可以参考易接,anysdk,棱镜等专做渠道聚合的公司。

接口已经定义好了,紧接着,上层游戏需要登录和支付的地方,怎么调用呢?对于游戏来说,这个接口需要new一个哪个实现?是UC还是当乐还是91呢?

所以我们就需要定义一个抽象层管理类,来管理游戏上层和这些渠道SDK和功能性SDK交互。因为渠道有且仅有一个,所以我们可以把渠道类名做成一致,方便我们使用反射创建对象,这个管理类里面就需要实现这些需求。

1.   判断是否存在第三方渠道,如果存在则创建渠道对象,渠道包;如果不存在则创建抽象层渠道基类对象,母包做测试用;

2.   通过反射去调用渠道SDK接口方法和生命周期方法,这样就可以实现游戏上层接入渠道SDK登录,支付等接口;

3.   通过配置文件去读取需要的第三方功能性SDK(插件)的全类名,循环取出所有的插件类名并创建对象,并且实现生命周期方法的调用。

 

                   (抽象层结构图)

因为有的SDK,需要在Activity的系统事件中做一些处理操作,而Activity是在游戏接入我们这个抽象层时,传递进来的,所以,我们在抽象层定义了一个Activity事件监听器,渠道基类和插件基类都继承这个类即可:

public interface IActivityListener {

     void onCreate(Object[] param);
     void onPause();
     void onResume();
     void onStart();
     void onBackPressed();
     void onNewIntent(Intent newIntent);
     void onStop();
     void onDestroy();
     void onActivityResult(Object[] param);
}

 

这样,整个SDK接入的抽象层就差不多了。还有一些细节,我们可以后面边开发,边迭代,边完善。后面我们将用实例来看看,游戏层怎么调用这个抽象层SDK,以及具体的SDK接入怎么来实现这个抽象层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值