提交 1f28dff0 作者: Administrator

合并分支 'release' 到 'master'

Release

查看合并请求 zwwl/zw_game_sdk!5
## GameSDKV1.0文档接入使用
## GameSDKV1.0文档接入使用
[目录](#sec1)
    1 [对接说明](#sec1)
    2 [获取对接SDK](#sec2)
               [说明](#sec2.1)
    3 [导入配置SDK资源AndroidStudio](#sec3)
               [添加依赖](#sec3.1)
               [maven配置](#sec3.2)
               [示例](#sec3.2)
    4 [配置清单文件](#sec4)
               [清单配置说明](#sec4.1)
    5 [初始化 SDK](#sec5)
               [SDK调用说明](#sec5.1)
               [application](#sec5.2)
               [调用示例](#sec5.3)
    6 [登录](#sec6)
               [接口说明](#sec6.1)
               [参数说明](#sec6.2)
               [调用示例](#sec6.3)
    7 [调起支付页面](#sec7)
               [调用说明](#sec7.1)
               [接口参数](#sec7.2)
               [调用示例](#sec7.3)
               [下单支付字段说明](#sec7.4)
    8 [支付回调结果](#sec8)
               [支付文档说明](#sec8.1)
    9 [角色上报](#sec9)
               [调用示例](#sec9.1)
               [参数字段说明](#sec9.2)
    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)
#### 1、对接说明 <a name="sec1"></a>
&nbsp;&nbsp; 1.1、此对接文档只适合与sdkv1.0版本。
&nbsp;&nbsp; 1.2、所有SDK功能在GameSDK类中,可通过初始化获取改类对象,后续所有更新功能都调用这个类中方法完成
&nbsp;&nbsp; 1.3、文档中所有GameSDK指S从平台获取arr文件
### 2、对接SDK<a name="sec2"></a>
从平台处获取对接SDK,android studio版本,选择V1.0的版本接入。<a name="sec2.1"></a>
### 3、导入配置SDK资源Androidstudio项目<a name="sec3"></a>
#### 1.1、在app工程目录build.gradle中添加依赖<a name="sec3.1"></a>
```
implementation 'com.zw.game.sdk:gameSDk:1.0.0'
```
#### 1.2、在主工程中添加maven<a name="sec3.2"></a>
```
maven { url 'http://nexus.zwwlkj01.top/repository/android-game/' }
```
#### 示例<a name="sec3.3"></a>
![示例1](https://zhangsheng-1300623068.cos.ap-guangzhou.myqcloud.com/default%2Fbuild1.png)
![示例2](https://zhangsheng-1300623068.cos.ap-guangzhou.myqcloud.com/default%2Fbuild2.png)
### 4、配置清单文件(具体请参考demo)<a name="sec4"></a>
1、参考demo中的清单文件配置,主要分为权限配置、sdk所需的组件配置,meta信息配置。(权限部分SDK已经适配,访问文件权限,Android10网络访问权限,安装适配等均已适配,但不包含所有设备)<a name="sec4.1"></a>
> **参数说明**:
| 参数名 | 说明 |
|:--------| -------------:|
| game_id | 游戏唯一标识,由平台方提供 |
```
<meta-data
android:name="game_id"
android:value="149" />
```
### 5、初始化SDK<a name="sec5"></a>
1、sdk初始化操作方法,最先调用,需要在主线程调用,最好游戏主界面activity中调用。此方法的可多次调用用于获得sdk全局管理器。<a name="sec5.1"></a>
2、调用示例:在游戏主界面activity的onCreate方法中调用
3、自己主工程application需要继承GameSdkApplication
> **application调用示例**:<a name="sec5.2"></a>
```
public class App extends GameSdkApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
```
> **初始化示例**:<a name="sec5.3"></a>
```
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
GameSdk.getInstance().init(this);
}
```
### 6、登录<a name="sec6"></a>
1、添加登录回调监听<a name="sec6.1"></a>
```
public void addLoginListener(OnLoginListener onLoginListener)
```
- 说明:在登陆前必须注册登陆回调监听,用于接收登陆结果,登录成功返回token
#### 参数说明<a name="sec6.2"></a>
| 参数 | 说明|
| :-------- | -------------: |
| OnLoginListener | 登录回调接口 |
- 参数类说明:OnLoginListener需要实现两个方法:
> **登录成功**:
```
void loginSuccess(Object data);
```
> **登录成功返回参数**:
| 参数 | 类型 | 说明 |
| :-------- | -------------: | -------------: |
| status_code | int| 状态码 |
| data| object | 返回数据 |
| msg| String| 描述信息 |
| data| object | 返回数据 |
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data | object | 用户数据 |
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; player_id | String | 玩家ID |
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avatar | String | 用户头像 |
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mobile | String | 手机号 |
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; has_identify | boolean | 是否实名 |
> **登录失败**:
```
void loginError(Object data);
```
> **登录失败返回参数**:
| 参数 | 类型 | 说明 |
| :-------- | -------------: | -------------: |
| status_code | int| 状态码 |
| data| object | 返回数据 |
| msg| String| 描述信息 |
| data| object | 返回数据 |
#### 调用示例<a name="sec6.3"></a>
```
GameSdk.getInstance().addLoginListener(this, new OnLoginListener() {
@Override
public void loginSuccess(Object data) {
Log.e("loginSuccess",data+"");
//显示悬浮球(根据游戏需求显示,可以在初始化显示,可以登录成功之后显示)
GameSdk.getInstance().show(SdkDemoActivity.this);
}
@Override
public void loginError(Object data) {
}
});
```
### 7、调起支付页面<a name="sec7"></a>
1、调起支付页面方法<a name="sec7.1"></a>
```
public void showPay(CustomPayParam payParam, OnPaymentListener paymentListener)
```
### 接口参数<a name="sec7.2"></a>
| 参数 | 说明 |
|:----|-----:|
|payParam|支付参数|
|paymentListener|回调接口|
#### 调用示例<a name="sec7.3"></a>
```
CustomPayParam data=new CustomPayParam();
CustomPayParam.RoleBean role=new CustomPayParam.RoleBean();
CustomPayParam.OrderBean orderInfo=new CustomPayParam.OrderBean();
data.setRole_id("425");
role.setEvent("other");
role.setServer_id("100001");
role.setRole_name("主宰传奇");
role.setCp_role_id("2413930833603897345");
role.setServer_name("主宰服");
role.setRole_level("83");
role.setRole_vip("0");
orderInfo.setCp_order_id("312223131");
orderInfo.setAmount("1");
orderInfo.setProduct_price("1");
orderInfo.setProduct_id("101");
orderInfo.setProduct_cnt("1");
orderInfo.setProduct_name("8元档充值");
orderInfo.setProduct_desc("商品");
orderInfo.setExt("测试数据");
data.setRole(role);
data.setOrder(orderInfo);
GameSdk.getInstance().showPay(this,data, new OnPaymentListener() {
@Override
public void Success(String msg) {
}
@Override
public void Failed(String msg) {
}
});
```
#### 下单支付字段说明<a name="sec7.4"></a>
| 名称 | 类型 | 是否必须 | 说明 |
|:--------------|-------:|-----:|-----------------:|
| cp_order_id | string | 非必须 | CP订单ID |
| amount | number | 非必须 | 商品总价(单位:分 |
| product_price | number | 非必须 | 商品价格(整数,后台自动换算分) |
| product_id | String | 非必须 | 商品ID |
| product_cnt | number | 非必须 | 商品数量 |
| product_name | string | 非必须 | 商品名称 |
| product_desc | string | 非必须 | 商品描述 |
| ext | string | 非必须 | 订 单额外信息用(json)|
| event | string | 非必须 | 事件|
| server_id | string | 非必须 | 区服id |
| server_name | string | 非必须 | 区服名称|
| cp_role_id | string | 非必须 | cp角色id |
| role_name | string | 非必须 | 角色名称 |
| role_level | string | 非必须 | 角色等级 |
| role_vip | string | 非必须 | 角色vip等级 |
| role_id | string | 非必须 | 角色ID |
### 8、支付回调通知<a name="sec8"></a>
1.1、支付回调通知请参考对接文档H5 SDK 对接文档-v1.0、服务端接入2.3<a name="sec8.1"></a>
### 9、角色上报<a name="sec9"></a>
#### 调用示例<a name="sec9.1"></a>
```
GameInfoSetting setting=new GameInfoSetting();
setting.setCp_account("w55231582254");
GameRoleInfo roleInfo=new GameRoleInfo();
roleInfo.setCombat_num("25564");
roleInfo.setCp_role_id("24139308336038973450");
roleInfo.setEvent("create");
roleInfo.setOnline_time("15426");
roleInfo.setRole_level("15");
roleInfo.setRole_name("测试角色上报");
roleInfo.setRole_vip("23");
roleInfo.setServer_id("100001");
roleInfo.setServer_name("主宰服");
setting.setRole(roleInfo);
GameSdk.getInstance().putRoleReport(setting, new SubmitRoleInfoCallBack() {
@Override
public void onSuccess(Object o) {
}
@Override
public void onFailure(int code, String msg) {
}
});
```
#### 参数字段说明<a name="sec9.2"></a>
| 名称 | 类型 | 是否必须| 说明 |
|:--------| -------------:| -------------------:|-------------:|
| role{} | object | 非必须 | 角色信息 |
| event | String | 非必须 | 事件类型,online: 角色登录, create: 创建角色,level_up: 提升等级,offline: 角色退出,other: 其他,delete: 删除角色 |
| server_id | string | 非必须 | 区服ID |
| server_name | string | 非必须 | 区服名称 |
| cp_role_id |string | 非必须 | CP角色ID |
| role_name | string | 非必须 | 角色名称 |
| role_level | number | 非必须 | 角色等级 |
| role_vip | number | 非必须 | 角色VIP等级 |
| combat_num | number | 非必须 | 角色战力 |
| online_time | number | 非必须 | 本次在线时长 |
| cp_account | number | 非必须 | CP账户 |
### 10、退出登录<a name="sec9"></a>
#### 添加登出回调监听<a name="sec10.1"></a>
```
public void addLogoutListener(OnLogoutListener onLogoutListener)
```
1、在退出登陆前必须注册退出登陆回调监听,用于接收退出登陆,或者登陆过期的退出登陆结果。
2、 参数类说明:OnLogoutListener需要实现两个方法:
3、 退出登陆成功:
4、退出登录成功并返回所有信息与code状态
#### 退出登录成功<a name="sec10.3"></a>
```
public void logoutSuccess(String s);
```
#### 退出登录失败<a name="sec10.4"></a>
```
public void logoutError(String msg);
```
#### 调用示例<a name="sec10.5"></a>
```
GameSdk.getInstance().addLogoutListener(new OnLogoutListener() {
@Override
public void logoutSuccess(String s) {
}
@Override
public void logoutError(String s) {
}
});
```
- 说明:在需要退出登陆时可调用此方法,注意此方法为退出,并不会调出登陆界面
### 11、退出应用弹框<a name="sec10"></a>
1、添加退出回调监听
#### 调用方法<a name="sec11.1"></a>
```
public void exitApp(ExitAppListener listener)
```
1、退出应用程序弹出提示框。
#### 调用示例<a name="sec11.2"></a>
```
@Override
public void onBackPressed() {
GameSdk.getInstance().exitApp(this, data -> {
});
}
```
- 说明:onBackPressed方法调用
### 12 gradle依赖说明<a name="sec12"></a>
1、打包arr依Glide库需要在主工程中添加依赖
```
api 'com.github.bumptech.glide:glide:4.11.0'
```
### 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)
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论