# 目录

- SDK文档
- SDK接入文档（Android）

# SDK文档

SDK接入参数获取及文档说明

# SDK接入文档（Android）

更新时间 | SDK版本 | 更新
2024年9月5日 | v2.4.9 | 1、新增SDK热更新功能 2、删除没有用到的资源和类 3、优化失败回调接口错误信息
2024年4月24日 | v2.4.82 | 1、修复输入框输入后操作过快导致获取内容异常问题
2024年4月16日 | v2.4.81 | 1、修复弹窗展示异常问题 2、修复异常提醒弹窗展示层级异常问题
2024年3月19日 | v2.4.8 | 1、底层通讯协议调整，提升整体安全性 2、支持游戏热更和强更 3、简化接入流程，去除一些不必要的方法 4、优化UI界面和交互流程，提升用户体验 5、界面H5化，方便后续维护更新 6、去除library接入方式，统一为引入aar 注意：支付宝jar有更新，AndroidManifests配置以library_ldmnq里面的为准

#### 一、接入说明

SDK资源下载链接：android-SDK-v2.4.9.zip

• 将压缩包里面的 library_ldmnq.aar 引入项目中

• 出包的包体建议带上x86/x64指令集的库，模拟器上运行流畅度和稳定性会更好。

##### 角标及闪屏页说明

使用闪屏角标里的文件.（建议将闪屏页放在hdpi目录下）

##### 接口改动说明

1、初始化、登录、支付接口不再返回状态码，而是回调对应的方法

2、移除方法：DoRelease、showFloatView、hideFloatView

3、如果已接入过2.4.8之前的版本，请将之前的版本资源删除

##### 混淆配置

    -keep class com.ld.sdk.** { *; }
    -keep class okhttp3.** { *; }
    -keep class com.google.gson.** { *; }
    -keep class okio.** { *; }
    -keep class com.squareup.picasso.** { *; }
    -keep class com.changzhi.net.** { *; }
    -keep class io.netty.** { *; }
    -dontwarn retrofit2.**
    -keep class retrofit2.** { *; }
    -keepattributes Signature
    -keepattributes Exceptions

#### 二、配置信息

    <!--配置游戏渠道信息-->
    <meta-data android:name="GAME_ID" android:value="10000"/>
    <meta-data android:name="CHANNEL_ID" android:value="10001"/>
    <meta-data android:name="SUN_CHANNEL_ID" android:value="10002"/>
    注意：GAME_ID 如果和游戏有冲突，可改为LD_GAME_ID

#### 三、接口说明

##### 授权用户协议弹窗接口

    String url = "第三方信息共享清单网页链接"; // 由接入方提供，可以传null，传null则不显示第三方共享清单
    LdSdkManger.getInstance().checkUserEmpower(activity, url, new UserEmpowerCallback() {
        @Override
        public void callback(boolean isEmpower) {
             if (isEmpower) {
               // 初始化雷电SDK
             } else {
               // 退出游戏
             }
         }
    });

##### 1. 初始化接口

    LdSdkManger.getInstance().init(MainActivity.this, "AppKey", new InitCallBack() {

              @Override
              public void onSuccess() {

              }

              @Override
              public void onFail(String desc) {

              }
    });

##### 2. 登录账号接口

    LdSdkManger.getInstance().showLoginView(this, new LoginCallBack() {

        @Override
        public void loginSuccess(String uid, String timestamp, String sign) {
             // 登录成功，sign为服务器请求参数usertoken
        }

        @Override
        public void loginFail(String desc) {
             // 登录失败，desc为描述
        }

        @Override
        public void loginLogout() {
             // 退出登录，需接入方处理返回到游戏登录界面
        }

        @Override
        public void accountCancellation() {
             // 当前功能未上线，不需要处理
        }

        @Override
        public void exitGame() {
             // 退出游戏，不用弹窗，直接关闭App进程
        }
    });

##### 3. 角色数据接口(角色创建和每次登录时候调用，第一次登录没有角色数据不用调用)

    LdGameInfo ldGameInfo = new LdGameInfo();
    ldGameInfo.serverId = "23";
    ldGameInfo.serverName = "内测服"
    ldGameInfo.roleId = "10086";
    ldGameInfo.roleName = "张三";
    ldGameInfo.roleType = "屠夫";
    ldGameInfo.level = "99";
    ldGameInfo.money = "10000000000000";
    ldGameInfo.partyName = "公会";
    ldGameInfo.vipLevel= 12;
    ldGameInfo.powerNum= 9999;

    LdSdkManger.getInstance().enterGame(Context, ldGameInfo, new EntryCallback() {
       @Override
       public void callback(int code, String desc) {
            // code==0为成功
       }
    });

参数说明：

参数名 | 中文描述 | 类型 | 是否必填
serverId | 服务器id | String | 必填
serverName | 服务器名字 | String | 必填
roleId | 角色id | String | 必填
roleName | 角色名字 | String | 必填
roleType | 角色类型，例如：战士，魔法师，弓箭手 | String | 可选（没有则填填默认值）
level | 角色等级 | String | 必填
money | 游戏的金币数 | String | 必填
partyName | 公会 | String | 可选（没有则填默认值）
vipLevel | VIP等级 | int | 可选（没有则填默认值）
powerNum | 角色战斗力 | int | 可选（没有则填默认值）

#####

##### 4. 支付接口

参数说明：

参数名 | 中文描述 | 类型 | 是否必填
orderId | 游戏的支付订单号 | String | 必填
amount | 支付金额（只接收整数，单位：分） | String | 必填
productId | 默认值12 | String | 必填
productDesc | 商品描述 | String | 必填
productName | 商品名称 | String | 必填
roleId | 角色id | String | 必填
roleName | 角色名字 | String | 必填
serverId | 服务器id（只接收Int类型的整数） | String | 必填
serverName | 服务器名字 | String | 必填

#####

    LdPayInfo ldPayInfo = new LdPayInfo();
    ldPayInfo.orderId = "12345";
    ldPayInfo.amount = "100"; //传int类型整数，不支持浮点数
    ldPayInfo.productId = "12";
    ldPayInfo.productDesc = "充值金币";
    ldPayInfo.productName = "金币";
    ldPayInfo.roleId = "10086";
    ldPayInfo.roleName = "张三";
    ldPayInfo.serverId = "23";
    ldPayInfo.serverName = "内测服";
    LdSdkManger.getInstance().showChargeView(this, ldPayInfo, new PayCallback() {
        @Override
        public void paySuccess(String uid, String billno, String timestamp) {
        // 支付成功 uid ：平台的用户ID   billno：订单号
        }    @Override    public void payFail(String desc) {
        // 支付失败，desc为失败描述
        }
        @Override
        public void payCancel() {
        // 用户取消支付
        }});

#####

##### 5. 游戏退出接口（必须接入）

    LdSdkManger.getInstance().showExitView(this, new ExitCallBack() {

       @Override
       public void onFinish(int code, String desc) {
          if (state == 0) {
               // code： 0.退出游戏；1.继续游戏；
          }
       }
    });

##### 6. 获取用户数据接口（登录成功后可获取）

    LdUserInfo ldUserInfo = LdSdkManger.getInstance().getUserInfo();

    uid：用户id
    isAuthenticated：用户是否实名认证
    realName：用户实名认证姓名
    birthday：用户实名认证出生日期（格式：20190101）
    isAdult：是否成年

##### 7. 实名认证接口（SDK默认登录后会进行强制实名，该接口可按需求接入）

    isForce;   是否强制实名，true该弹窗在实名认证成功前不可关闭

    LdSdkManger.getInstance().verifyIdCard(boolean isForce , new VerifyIdCardListener() {
        @Override
        public void callback(int code, String birthday, boolean isAdult) {

        }
    });

    结果返回:
    code：   0.不可用； 1.成功； 2.验证中； 3.验证不通过；
    birthday;   用户出生日期（19990909）
    isAdult;   是否成年