首页 > 代码库 > TYPESDK手游聚合SDK客户端设计思路与架构之二:安卓平台统一化接口结构及思路
TYPESDK手游聚合SDK客户端设计思路与架构之二:安卓平台统一化接口结构及思路
在上一篇《TypeSDK聚合sdk设计基本原则》中我们提到了,设计聚合sdk需要设计开发平台部分的接口,以及设计发布平台的聚合这2个大模块。那么我们今天就先来讲讲发布平台之一:安卓平台的统一化接口结构和思路。
一、相关的需求
安卓平台的统一化接口,我们需要考虑到具体以下的几点:
1.对外需要有统一的接口,保证不同的渠道sdk 对同一个游戏来说,是调用相同的接口,传递相同的参数
2.对内需要有一套扩展性很好的框架,可以应对不同渠道的sdk差异性
二、设计的模块
那么针对这些考虑点,安卓平台的统一化接口,我们将主要分成以下几个部分来设计:
1.基础架构设计
2.具体渠道实现类
3.统一化对外平台接口
4.跨平台交互的设计
三、具体的细节
1.统一化的基础架构
针对统一化的基础架构,我们主要设计了以下的一个主体框架
我们主要实现了这么一套结构
1.我们创建通用的基础抽象类(BaseActivity)。
该类中,包含了所有sdk都有,但是实现不同的接口,这些接口作为抽象函数,要求每个渠道的具体实现类都去实现。
1.1 初始化接口:void init()
1.2 登录接口: void login()
1.3 登出接口:void logout()
1.4 支付接口:string pay(string _json_string)
1.5 提交玩家数据:void updatePlayerInfo( string _json_string)
1.6显示用户中心: void showPlayerCenter()
1.7 大退游戏(杀进程):void exit game();
1.8 显示分享 void showShare(string _json_string)
还需要通用的抽象接口,用作sdk框架的拓展
1.9 根据函数名,调用具体实现类中的函数:
string DoAnyFunction(string _function_name,string _json_string)
我们还包含了通用固定实现的接口,用作sdk框架的补充
1.10.获取本地渠道的配置:string getPlatfromInfo()
1.11.获取缓存在安卓层的用户信息:string getUserInfo()
2.我们根据每一个渠道的sdk不同,单独创建每个渠道自己的实现类Bonjour_xx。
2.1 这个类继承通用的框架基类(BaseActivity)。
2.2 在该框架下,实现基类所有的抽象接口。如果没有该接口的功能,也需要做出相应的处理,例如输出log日志。
2.3 同时该类可以增加渠道自有的特殊接口(例如获取好友列表)
3.发布平台有一个统一的给外部调用接口实现的类:mainActivity
3.1.mainActivity给unity调用时,需要继承UnityPlayerActivity。在给cocos2dx调用时,需要继承Cocos2dxActivity。我们的主要目的是给游戏的开发平台调用,就是说,游戏开发平台是哪个,那我们就需要写这么一个给其调用的mainActivity。
3.2 mainActivity中需要统一化对外的接口名字,并且在每个接口中,使用 bonjour_xx的实例对象,来实现具体接口的业务逻辑
3.2 mainActivity中需要能够让开发平台(unity/cocos2dx)需要使用 bonjour_xx来调用基类的通用拓展的函数
4.跨平台交互部分
跨平台交互我们需要考虑两个方面
a.如何将从发布平台调用开发平台函数
b.如何将从开发平台调用发布平台函数
1.在安卓层,我们只需要将需要给到unity调用的函数,写在之前提到过的mainactivty中,在unity中,可以直接通过函数名来调用mainactivity的函数
2.在unity层,提供了我们通用的跨平台调用接口
void UnitySendMessage(string beheaver_name, string function_name, string json_string );
我们只需要知道unity部分用来接收消息的脚本名字,需要执行的脚本函数名,以及传递的参数,就可以调用unity的响应函数了。
综上安卓向unity平台传递数据和调用函数,主要通过消息机制发送消息
unity向安卓平台传递参数和调用函数,则通过函数名,用反射来调用mainActivity里的接口。
以上就是我们安卓发布平台的聚合sdk设计思路细节,下一章我们将讲述ios聚合sdk的设计思路细节。
这个项目已开源,大家有兴趣可以自己研究或者参照项目编写自己的聚合SDK
项目地址:https://code.csdn.net/typesdk_code
项目地址:https://github.com/typesdk
TYPESDK手游聚合SDK客户端设计思路与架构之二:安卓平台统一化接口结构及思路