Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zw_game_sdk
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
CI / CD
CI / CD
流水线
日程表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
提交
问题看板
Open sidebar
zwwl
zw_game_sdk
Commits
57aa1fb8
提交
57aa1fb8
authored
4月 21, 2025
作者:
刘添
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新 AndroidSDK对接说明文档.md
上级
fadb83a3
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
134 行增加
和
337 行删除
+134
-337
AndroidSDK对接说明文档.md
AndroidSDK对接说明文档.md
+134
-337
没有找到文件。
AndroidSDK对接说明文档.md
浏览文件 @
57aa1fb8
## GameSDKV1.0文档接入使用
# 国内游戏Android客户端对接说明文档V3.2.2.5
## GameSDKV1.0文档接入使用
# 国内游戏Android客户端对接说明文档V3.2.2.5
[
目录
](
#sec1
)
### 目录
1
[
对接说明
](
#sec1
)
#### 一.[SDK概述
](#sec1)
1.1
[
主要功能
](
#sec1.1
)
2
[
获取对接SDK
](
#sec
2
)
1.2
[
SDK清单文件
](
#sec1.
2
)
[
说明
](
#sec2.1
)
1.3
[
更新内容
](
#sec1.3
)
3
[
导入配置SDK资源AndroidStudio
](
#sec3
)
1.4
[
接入准备
](
#sec1.4
)
[
添加依赖
](
#sec3.1
)
#### 二.[快速集成](#sec2
)
[
maven配置
](
#sec3.2
)
1
[
引入仓库
](
#sec2.1
)
[
示例
](
#sec3
.2
)
2
[
导入SDK
](
#sec2
.2
)
4
[
配置清单文件
](
#sec4
)
3
[
手动引入须知
](
#sec2.3
)
[
清单配置说明
](
#sec4.1
)
4
[
初始化SDK
](
#sec2.4
)
5
[
初始化 SDK
](
#sec5
)
[
SDK调用说明
](
#sec5
.1
)
4.1
[
初始化SDK
](
#sec2.4
.1
)
[
application
](
#sec5
.2
)
4.2
[
SDK登录
](
#sec2.4
.2
)
[
调用示例
](
#sec5.3
)
4.3
[
显示悬浮球
](
#sec2.4.4
)
6
[
登录
](
#sec6
)
4.4
[
SDK支付
](
#sec2.4.4
)
[
接口说明
](
#sec6.1
)
4.5
[
SDK角色上报
](
#sec2.4.5
)
[
参数说明
](
#sec6.2
)
4.6
[
退出游戏程序
](
#sec2.4.6
)
[
调用示例
](
#sec6.3
)
5
[
服务端接口校验
](
#sec5
)
7
[
调起支付页面
](
#sec7
)
## 一、 SDK概述<a name="sec1"></a>
[
调用说明
](
#sec7.1
)
安卓端SDK升级到3.2.2.5版本适配了高版本与退出登录或单点登录状态码返回,具体参数详情见初始化
[
接口参数
](
#sec7.2
)
[
调用示例
](
#sec7.3
)
### 1.1 主要功能<a name="sec1.1"></a>
[
下单支付字段说明
](
#sec7.4
)
*
SDK登录
*
SDK支付
*
SDK角色上报
8
[
支付回调结果
](
#sec8
)
[
支付文档说明
](
#sec8.1
)
### 1.2 SDK清单文件<a name="sec1.2"></a>
9
[
角色上报
](
#sec9
)
*
SDK清单配置
[
调用示例
](
#sec9.1
)
```
<!--掌玩SDK游戏ID-->
[
参数字段说明
](
#sec9.2
)
<meta-data
android:name="game_id"
android:value="149" />
10
[
退出登录
](
#sec10
)
[
接口回调说明
](
#sec10.1
)
[
退出成功
](
#sec10.3
)
[
退出失败
](
#sec10.4
)
[
调用示例
](
#sec10.5
)
11
[
退出应用
](
#sec11
)
[
调用方法
](
#sec11.1
)
[
调用示例
](
#sec11.1
)
12
[
gradle依赖
](
#sec12
)
13
[
apk打包
](
#sec13
)
[
混淆说明
](
#sec13.1
)
[
打包说明
](
#sec13.2
)
14
[
服务端接口说明
](
#sec14
)
<!-- 巨量、快手、腾讯开放平台申请应用,用于转端包选择0 -->
<meta-data
android:name="app_id"
android:value="517181" />
<!--腾讯广告必填-->
<meta-data
android:name="secret"
android:value="test" />
<!--快手平台申请应用名称,不是快手投放包可以选择不填写-->
<meta-data
android:name="app_name"
android:value="tlcq" />
#### 1、对接说明 <a name="sec1"></a>
<!--0默认SDK,1表示巨量AD,2表示快手,3表示腾讯-->
1.1、此对接文档只适合与sdkv2.2.0.0(不包含广告SDK)
<meta-data
android:name="app_status"
android:value="1" />
1.2、所有SDK功能在GameSDK类中,可通过初始化获取改类对象,后续所有更新功能都调用这个类中方法完成
```
1.3、文档中所有GameSDK指S从平台获取arr文件或者远程依赖implementation 'com.zw.game.sdk:gameSDk:3.0.0.3'
1.3、文档中广告GameSDK指S从平台获取arr文件或者远程依赖implementation 'com.zw.game.sdk:gameSDk:3.0.0.3'
1.4、开发工具:要求使用Android Studio 3.0版本及以上,Gradle版本建议5.4.1版本及以上,Gradle插件(Android gradle plugin)版本建议3.2.2版本及以上,- Android SDK版本:最低支持Android 5.0版本(minSdkVersion>=21),targetSdkVersion不支持30以上,建议targetSdkVersion=28;
### 1.3 更新内容<a name="sec1.3"></a>
游戏包体的VersionCode以及VersionName必须设置,不要留空。
*
更新了退出登录与单点登录状态用于研发更新本地缓存数据
###
2、对接SDK<a name="sec2
"></a>
###
1.4 接入准备<a name="sec1.4
"></a>
从平台处获取对接SDK,android studio版本,选择V3.0.0.3的版本接入。
<a
name=
"sec2.1"
></a>
*
正式接入前请务必阅读掌玩SDK接入流程的介绍,并且在掌玩SDK平台获取game_id与game_secret,此参数将由掌玩游戏对接技术或产品对接,对接时由平台方提供app_id、app_status、app_name、game_id、PackName、游戏appName等字段信息,请严格阅读对接时平台对接人员提供参数文档
### 3、导入配置SDK资源Androidstudio项目<a name="sec3"></a>
#### 3.1、在app工程目录build.gradle中添加依赖<a name="sec3.1"></a>
> | 名称 | 说明 |
> | ----------- | ------------------------------------------------- |
> | game_id | 游戏在平台的唯一标识。 |
> | game_secret | 平台方提供,游戏签名秘钥。 |
> | app_status | 用户在平台登录的投放媒体标识。 |
> | app_name | 游戏在三方平台标识(快手)。 |
> | PackName | 游戏在用户设备安装唯一标识 |
> |
```
## 二 、快速集成<a name="sec2"></a>
implementation("com.zw.game.sdk:gameSDk:3.0.0.3")
//如无法下载SDK完整,请依赖下列仓库
implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.15.4'
//// 商业化组件(必须) 6.14.2 以上版本商业化组件独立,注:必须接入以免平台限制应用上传
implementation 'com.bytedance.applog:RangersAppLog-All-convert:6.15.4'
//implementation 'com.zw.game.sdk:gameSDk:1.0.0' 穿山甲广告SDK
//穿山甲广告在主工程中添加
ndk {
abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a'
}
### 2.1 引入仓库<a name="sec2.1"></a>
在project级别的build.gradle中添加Maven仓库
```
```
#### 3.2、在主工程中添加maven<a name="sec3.2"></a>
//掌玩SDK
maven { url 'http://nexus.zwwlkj01.top/repository/android-game/' }
```
//巨量SDK
//巨量SDK
maven {
maven {
url 'https://artifact.bytedance.com/repository/Volcengine/'
url 'https://artifact.bytedance.com/repository/Volcengine/'
}
}
maven {
url 'https://jitpack.io'
}
mavenCentral()
jcenter()
//掌玩SDK
maven { url 'http://nexus.zwwlkj01.top/repository/android-game/' }
maven { url 'http://nexus.zwwlkj01.top/repository/toutiaoSdk/' }
//适配华为荣耀获取OAID
repositories { maven { url 'https://developer.huawei.com/repo' } }
repositories { maven { url 'https://developer.hihonor.com/repo' } }
```
maven { url 'http://nexus.zwwlkj01.top/repository/toutiaoSdk/' }
#### 3.3本地ARR在gradle依赖
```
无
```
```
### 2.2 导入SDK<a name="sec2.2"></a>
在app module级别的build.gradle文件中,在dependencies里引入SDK
*
3.2.2.5版本(最新版)
#### 示例<a name="sec3.3"></a>
在app module级别的build.gradle文件中,在dependencies里引入SDK


### 4、配置清单文件(具体请参考demo)<a name="sec4"></a>
1、参考demo中的清单文件配置,主要分为权限配置、sdk所需的组件配置,meta信息配置。(权限部分SDK已经适配,访问文件权限,Android10网络访问权限,安装适配等均已适配,但不包含所有设备)
<a
name=
"sec4.1"
></a>
> **参数说明**:
| 参数名 | 说明 |
|:--------| -------------:|
| game_id | 游戏唯一标识,由平台方提供 |
|game_secret|服务端对接时会用到,由平台方提供|
SDK implementation拆分成为通用组件跟应用宝组件
```
```
<!--掌玩SDK游戏ID-->
<meta-data
android:name="game_id"
android:value="149" />
<!-- 巨量、快手、腾讯开放平台申请应用,用于转端包选择0 -->
//通用版SDK,主要适用快手。转端、巨量、腾讯广告投放或直播
<meta-data
android:name="app_id"
android:value="517181" />
<!--腾讯广告必填-->
implementation 'com.zw.game.sdk:gameSDk:3.2.2.5'
<meta-data
android:name="secret"
android:value="test" />
<!--快手平台申请应用名称,不是快手投放包可以选择不填写-->
<meta-data
android:name="app_name"
android:value="tlcq" />
<!--0默认SDK,1表示巨量AD,2表示快手,3表示腾讯-->
//应用宝版本SDK 主要用于应用宝上架包,单独会给依赖地址与,每个上架包的仓库地址版本不同
<meta-data
//例如----
android:name="app_status"
android:value="1" />
implementation 'com.zw.game.tencent.sdk:gameSDk:1.1.25' //救世英雄版号,此仓库版本用于救世英雄上架包,具体对接技术在对接沟通群发送版本参数文档
```
```
若工程包启用了混淆,请添加如下混淆配置在app下
### 5、初始化SDK<a name="sec5"></a>
```
-keep class com.bytedance.ads.convert.broadcast.common.EncryptionTools {*;}
1、sdk初始化操作方法,最先调用,需要在主线程调用,最好游戏主界面activity中调用。此方法的可多次调用用于获得sdk全局管理器。
<a
name=
"sec5.1"
></a>
2、调用示例:在游戏主界面activity的onCreate方法中调用
3、自己主工程application调用application初始化
> **初始化示例**:<a name="sec5.3"></a>
```
### 2.3 手动引入<a name="sec2.3"></a>
推荐您远程引入SKD,如特殊情况需要手动引入,请在对接群中联系技术单独出AAR本地包
### 2.4初始化SDK <a name="sec2.4.1"></a>
在Activity中初始化SDK,建议在游戏ManActivity中初始化
```
```
GameService.getInstance().onCreate(mActivity, new InitZyCallback() {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
//游戏前必须首先进行初始化:
private void init() {
GameService.getInstance().onCreate(getCurActivity(), new InitZyCallback() {
@Override
@Override
public void onSuccess(int status) {
public void onSuccess(int status) {
switch (status){
switch (status){
...
@@ -269,46 +174,33 @@
...
@@ -269,46 +174,33 @@
case 3:
case 3:
showToast("退出登录成功");
showToast("退出登录成功");
break;
break;
case 4:
showToast("切换登录成功");
break;
default:
default:
showToast("初始化失败");
showToast("初始化失败");
break;
break;
}
}
}
@Override
public void onFailed(Object o) {
showToast(o.toString());
}
});
//配置横竖屏,等一些可配置信息
ConfigInfo.allowPORTRAIT = false;
}
```
### 6、登录<a name="sec6"></a>
1、添加登录回调监听
<a
name=
"sec6.1"
></a>
```
public void addLoginListener(OnLoginListener onLoginListener)
```
```
-
说明:在登陆前必须注册登陆回调监听,用于接收登陆结果,登录成功返回token
-
需游戏服务端调用登录验证之后,才能进入游戏参照
[
SDK对接说明
](
#sec14
)
#### 参数说明<a name="sec6.2"></a>
> | 名称 | 状态码说明 |
> | ----------- | ------------------------------------------------- |
> | status | 状态码-1表示玩家退出登录失败、1SDK初始化完成、2表示初始化失败需、3退出登录完成并CP需要更新游戏状态、4多账号切换情况下切换成功并CP需要刷新数据 |
| 参数 | 说明|
| :-------- | -------------: |
| OnLoginListener | 登录回调接口 |
-
参数类说明:OnLoginListener需要实现两个方法:
### 2.4.2 SDK登录<a name="sec2.4.2"></a>
> **登录成功**:
```
```
GameService.getInstance().showLogin(new OnLoginListener() {
void loginSuccess(Object data);
@Override
public void loginSuccess(Object data) {
}
@Override
public void loginError(Object data) {
}
});
```
```
...
@@ -327,82 +219,20 @@ void loginSuccess(Object data);
...
@@ -327,82 +219,20 @@ void loginSuccess(Object data);
|
has_identify | boolean | 是否实名 |
|
has_identify | boolean | 是否实名 |
|
user_token | strng | token |
|
user_token | strng | token |
### 2.4.3 游戏显示悬浮球<a name="sec2.4.3"></a>
监听到登录完成或者在登录成功回调中显示悬浮球
> **登录失败**:
```
void loginError(Object data);
```
```
GameService.getInstance().showBall(activity);
> **登录失败返回参数**:
| 参数 | 类型 | 说明 |
| :-------- | -------------: | -------------: |
| status_code | int| 状态码 |
| data| object | 返回数据 |
| msg| String| 描述信息 |
| data| object | 返回数据 |
#### 调用示例<a name="sec6.3"></a>
```
GameService.getInstance().showLogin(new OnLoginListener() {
@Override
public void loginSuccess(Object data,String token) {
Log.e("loginSuccess",data+"");
//显示悬浮球(根据游戏需求显示,可以在初始化显示,可以登录成功之后显示)
GameService.getInstance().showBall(SdkDemoActivity.this);
}
@Override
public void loginError(Object data) {
}
});
```
### 游戏内中退出登录(请勿在主线程中使用,会导致游戏反复退出登录,游戏内部无退出登录按钮则无需调用此方法,如需不明白,请联系我方技术人员)
```
GameService.getInstance().outGameLogin(new OnLogoutListener() {
@Override
public void logoutSuccess(Object s) {
}
@Override
public void logoutError(Object s) {
}
});
```
```
#### 悬浮球生命周期中调佣(对接抖音不需要)
```
@Override
protected void onDestroy() {
super.onDestroy();
GameService.getInstance().onDestroy(this);
}
```
### 7、调起支付页面<a name="sec7"></a>
1、调起支付页面方法
<a
name=
"sec7.1
"
></a>
### 2.4.4 SDK支付<a name="sec2.4.4
"></a>
```
```
...
@@ -410,15 +240,13 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
...
@@ -410,15 +240,13 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
```
```
### 接口参数<a name="sec7.2"></a>
| 参数 | 说明 |
| 参数 | 说明 |
|:----|-----:|
|:----|-----:|
|payParam|支付参数|
|payParam|支付参数|
|paymentListener|回调接口|
|paymentListener|回调接口|
> 调用示例
#### 调用示例<a name="sec7.3"></a>
```
```
...
@@ -459,8 +287,7 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
...
@@ -459,8 +287,7 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
```
```
> 下单支付字段说明
#### 下单支付字段说明<a name="sec7.4"></a>
| 名称 | 类型 | 是否必须 | 默认值|说明 |
| 名称 | 类型 | 是否必须 | 默认值|说明 |
...
@@ -482,11 +309,7 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
...
@@ -482,11 +309,7 @@ public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
| role_vip | string | 必须 | 0|角色vip等级 |
| role_vip | string | 必须 | 0|角色vip等级 |
| role_id | string | 必须 |0| 角色ID |
| role_id | string | 必须 |0| 角色ID |
> 支付回调通知
### 8、支付回调通知<a name="sec8"></a>
##### 接口说明
> 需要游戏服务端完成该接口,接收平台充值成功的信息。
> 需要游戏服务端完成该接口,接收平台充值成功的信息。
...
@@ -598,13 +421,10 @@ function payNotify(){
...
@@ -598,13 +421,10 @@ function payNotify(){
payNotify
();
payNotify
();
```
```
### 9、角色上报<a name="sec9"></a>
### 2.4.5 SDK角色上报<a name="sec2.4.5"></a>
#### 调用示例<a name="sec9.1"></a>
```
```
GameInfoSetting setting=new GameInfoSetting();
GameInfoSetting setting=new GameInfoSetting();
GameRoleInfo roleInfo=new GameRoleInfo();
GameRoleInfo roleInfo=new GameRoleInfo();
roleInfo.setEvent("create");//事件类型,online: 角色登录, create: 创建角色,level_up: 提升等级,offline: 角色退出,other: 其他,delete: 删除角色
roleInfo.setEvent("create");//事件类型,online: 角色登录, create: 创建角色,level_up: 提升等级,offline: 角色退出,other: 其他,delete: 删除角色
roleInfo.setServer_id("100001");//区服ID
roleInfo.setServer_id("100001");//区服ID
...
@@ -625,7 +445,7 @@ payNotify();
...
@@ -625,7 +445,7 @@ payNotify();
roleInfo.setSponsor_level("12");//赞助等级/会员等级
roleInfo.setSponsor_level("12");//赞助等级/会员等级
roleInfo.setReiki_num("12"); //灵符值
roleInfo.setReiki_num("12"); //灵符值
//没有官邸等级之类传请传空
//没有官邸等级之类传请传空
roleInfo.setMain_city_level("大司马");//官邸等级
roleInfo.setMain_city_level("大司马");//官邸等级
roleInfo.setPower("阔克萨斯");//国家
roleInfo.setPower("阔克萨斯");//国家
roleInfo.setChapter_index("12");//章节等级
roleInfo.setChapter_index("12");//章节等级
setting.setRole(roleInfo);
setting.setRole(roleInfo);
...
@@ -641,11 +461,11 @@ payNotify();
...
@@ -641,11 +461,11 @@ payNotify();
}
}
});
});
```
#### 参数字段说明<a name="sec9.2"></a>
```
> 参数说明
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | :---------------------------------------------------------- | :---- | :----- | :----- | :----------- |
> | :---------------------------------------------------------- | :---- | :----- | :----- | :----------- |
> | event | true | String | other | 事件类型 |
> | event | true | String | other | 事件类型 |
...
@@ -678,8 +498,7 @@ payNotify();
...
@@ -678,8 +498,7 @@ payNotify();
| recharge | 角色充值 |
| recharge | 角色充值 |
| other | 其他 |
| other | 其他 |
### 行为角色上报
> 行为角色上报
```
```
...
@@ -746,50 +565,38 @@ payNotify();
...
@@ -746,50 +565,38 @@ payNotify();
> | mail | 邮件操作 |
> | mail | 邮件操作 |
### 2.4.6 退出游戏程序<a name="sec2.4.6"></a>
```
public void exitApp()
```
```
1、退出应用程序弹出提示框。
@Override
#### 调用示例<a name="sec11.2"></a>
```
@Override
public void onBackPressed() {
public void onBackPressed() {
GameService.getInstance().exitApp();
GameService.getInstance().exitApp();
}
}
```
```
-
说明:onBackPressed方法调用
### 12 gradle依赖说明<a name="sec12"></a>
1、打包arr依Glide库需要在主工程中添加依赖
2、如遇到OKhttp无法下载下来,请按照下方依赖进行添加
```
> 游戏内有切换账号按钮,可调用outGameLogin方法,此方法不是必须,选择使用,退出登录成功后再初始化SKD方法中监听回调信息,状态码3
api 'com.github.bumptech.glide:glide:4.11.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
```
```
GameService.getInstance().outGameLogin(new OnLogoutListener() {
@Override
public void logoutSuccess(Object s) {
}
@Override
public void logoutError(Object s) {
}
});
### 13 apk打包<a name="sec13"></a>
```
1.
sdk 的代码已经经过混淆,请勿混淆sdk的代码
<a
name=
"sec13.1"
></a>
2、打包apk签名机制需要勾选V1、V2签名
<a
name=
"sec13.2"
></a>
3、sdk代码已经经过混淆,请不要再次混淆sdk代码,demo会贴出SDK混淆代码,可复制到自己混淆中(具体请参考demo)
###
14 服务端接口 调用方直接使用http 调用接口:<a name="sec14
">
###
5 服务端接口 调用方直接使用http 调用接口:<a name="sec5
">
### 接口地址
### 接口地址
...
@@ -878,12 +685,3 @@ public void exitApp()
...
@@ -878,12 +685,3 @@ public void exitApp()
return json_decode($data, true);
return json_decode($data, true);
}
}
```
```
###调用广告方法
```
GameService.getInstance().showRewardVideo("901121430");
```
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论