首页 > 代码库 > 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客户端设计思路与架构之二:安卓平台统一化接口结构及思路