文档章节

TYPESDK手游聚合SDK客户端设计思路与架构之二:安卓平台统一化接口结构及思路

TypeSDK
 TypeSDK
发布于 2017/01/21 13:55
字数 1185
阅读 14
收藏 0

在上一篇《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

TypeSDK

粉丝 3
博文 18
码字总数 30285
作品 1
高级程序员
私信 提问
TypeSDK 手游多渠道SDK新解决方案

经历了头两年的爆发之后,手游也和端游、页游一样,进入了一个利润变薄、产业整合的过渡期。除了那些自有渠道的大厂商,如何找到新的用户来源始终是中小CP面临的最大问题,解决办法目前看来只...

TypeSDK
2016/11/10
2
0
AndroidStudio封装SDK的那些事

首先SDK是提供给别人调用的工具。所以常见的SDK都是以jar包,so库,aar包等方式导入APP项目中。然后提供一些公开的API供接入方调用。所以在Androidstudio中如果需要生成jar或者aar,就需要将...

尘封的落叶
2018/06/23
0
0
手游渠道 SDK 统一接入框架--TypeSDK

TypeSDK是一个开源的统一手游渠道SDK接入框架,拥有80个海内外渠道,具备简单接入、快速出包、运营工具、分权限管理、产品数据打点等功能。实施周版本更新制度,确保每个每个使用者直接下载就...

TypeSDK
2016/11/10
898
0
AndroidDev站点推荐 - 全新第一期Issue#1

原文发表于 Rocko's blog - AndroidDev站点推荐-Issue#1 Android-Dev-Bookmarks 项目目前可以生成书签文件导入到浏览器中啦,大家多多关注~ ADB 站点上的内容也是一样的,方便在线浏览。现在...

Rocko
2016/02/18
0
0
广州游戏渠道创业团队求android开发小伙伴共同成长

各位想干点事业的android开发同仁们: 您们好!广州卓动信息科技有限公司是一个年轻的游戏渠道团队,我们有独特的运营平台和渠道,我们致力于将国内的好游戏带给海外的朋友们,我们致力于将中...

卓动-小武
2014/12/10
991
12

没有更多内容

加载失败,请刷新页面

加载更多

nginx rails 详细站点配置入门教程

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,R...

xiangyunyan
44分钟前
3
0
Shiro

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

嘿嘿嘿IT
48分钟前
1
0
Flutter 之 Dart语言基础详解 上篇

经过了一个星期的React Native的学习和了解,感觉还是Flutter的优势会更高一些,而且从学习成本来说感觉做安卓的同学学习flutter会相对低一点,门槛会低很多。 当然dart的基础笔者还是从其他...

林-师傅等等我
今天
5
0
Java NIO问题总结

问题1:IO事件在被处理之前,selector.select()方法依然能够返回该事件。即如果在一个线程A中进行selector.select(),而将selector.selectedKeys()中的SelectionKey交由业务线程池去处理,则...

月下狼
今天
5
0
ehcache

简单介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开 源Java分布式缓存。主要面向通用缓存,Java EE和轻量...

大笨象会跳舞吧
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部