手游海外SDK实战——Android客户端之网络篇

作者: 分类: UGSDK 发布时间: 2021-02-09 17:22 6手游海外SDK实战——Android客户端之网络篇已关闭评论

一、前言

随着国内手游版号申请难度的增加,以及防沉迷等一系列政策的影响,很多国内开发者纷纷开始寻求海外发行之路。那么手游出海首要的是需要一套适合海外发行和运营的手游SDK联运系统。

本系列我们就来开发一套这样的SDK,我们暂且称这套SDK为UGSDK。该SDK已经开发完成,如果有兴趣或者想体验完整功能的同学,可以加我们的海外技术交流QQ群:1055996444。

整个UGSDK项目,暂时可以分为三大部分——Android客户端SDK部分、iOS客户端SDK部分以及服务端部分(目前不考虑H5游戏部分)。

本篇主要介绍UGSDK项目中Android客户端部分中的网络和协议部分。

 

二、基础Http组件

对于熟悉Android开发的同学, 一提到http组件,第一想到的可能就是okhttp3了。 如果是开发一款普通的app,我们当然可以直接使用okhttp3这样优秀的开源http组件了。 但是记住,我们开发的是SDK产品。

SDK产品和普通的app最大的区别在于交付。 普通的app开发完成,我们只需要保证能生成最终的apk并运行正常即可。但是对于手游SDK产品, 我们最终发布的是SDK包,最终会在不同的游戏中嵌入我们的SDK包。你依赖的任何第三方组件,在不同的游戏产品中也可能被依赖。像okhttp3这样优秀且知名的组件就更不用说了。

如果SDK产品中我们依赖了okhttp3的比如3.0版本, 后面我们将SDK提供给某个游戏产品接入的时候, 游戏产品中也依赖了okhttp,比如依赖的是4.0版本。那么当游戏在编译或者运行的时候, 很可能因为两个不同版本的okhttp组件而出现错误。

所以,在开发SDK产品的时候, 我们需要坚持这样的原则:“能自己造的轮子,坚决自己造”,尽可能让让所有的组件独一无二。当然,你也可以对这些开源组件修改包名,从而达到避免冲突的目的。 但是这样不利于后期的版本升级和维护。

其实,Android本身已经提供了HttpURLConnection这样的组件, 我们基于该组件,适当地进行一个封装,就可以完成基础的http请求(GET or POST)。完全没必要引入一个第三方http组件库。

在UGSDK中,我们在之前介绍的ug-common模块中,封装一个简单的httpclient组件:

ugsdk_network

上面的基础http请求组件中,我们简单介绍下各个类的作用:

上面这是简单介绍了UGSDK中封装的基础http组件,你也可以基于HttpURLConnection自己简单封装,或者直接使用改名后的okhttp等组件。都是一样的目的,只是为了发送http或者https协议。

 

三、网络协议模块

在UGSDK中, 不同的业务模块中,我们都需要和服务端进行交互。 在设计和服务端的交互协议时,我们尽可能采用统一的协议格式。

1、请求参数设计

  • 所有协议的参数均采用application/x-www-form-urlencoded格式发送。
  • 所有协议均采用HTTP POST 方法发送。
  • 所有字段发送之前需要进行url encode处理。
  • 所有协议都有几个固定的协议参数:appID、timestamp以及sign(协议参数签名)。
  • 所有协议参数签名规则,使用MD5(key1=val1&key2=val2&…..&secretKey=appKey)。出了sign之外的所有非空参数,按照key顺序排序,然后按key1=val1&key2=val2&…,最后附加&secretKey=appKey生成待签名串。最终使用MD5 32位大写算法生成签名,放到协议字段sign中一起发送给服务端。

 
2、响应设计

  • 所有协议的响应参数格式均为application/json格式。
  • 所有协议的响应格式均按照如下格式:
  • 所有协议的响应格式中,code为0时,表示操作成功;其他状态为失败。只有code为0时,data字段才可能有值。

 
3、协议模块封装

为了尽可能将协议部分通用的规则进行固定化, 我们封装一个简单的网络协议组件:

 
4、网络协议调用示例

对于各个协议调用的时候, 直接调用上面封装的ApiRequest组件就可以完成了。 我们看其中邮箱注册协议的示例:

 

好了,本篇我们介绍了在UGSDK中基础http请求组件的封装以及网络协议的规则制定和封装。感兴趣的同学可以加入我们的技术交流Q裙哦(1055996444)。U8SDK海外技术群

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=2398

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入