更新时间 | SDK版本 | 更新内容 |
2025年4月8日 | v2.5.1 | 1、修复隐私空间加载SDK错误问题 2、新增切换账号功能 3、退出登录token失效 4、雷电圈授权登录交互优化(真机) |
2025年3月13日 | v2.4.9.9 | 1、去掉支付参数ServerId前端纯数字校验 2、修复已知问题 |
2025年2月11日 | v2.4.9.8 | 1、优化支付体验 2、修复已知问题 |
2025年1月6日 | v2.4.9.6 | 1、热更新功能兼容更多机型 |
2024年11月26日 | v2.4.9.4 | 1、优化热更新兼容性 2、新增App授权登录 |
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.8.zip
• 将压缩包里面的 library_ldmnq.aar 引入项目中。
• 出包的包体建议带上x86/x64指令集的库,模拟器上运行流畅度和稳定性会更好。
•使用闪屏角标里的文件.(建议将闪屏页放在hdpi目录下)。
•初始化、登录、支付接口不再返回状态码,而是回调对应的方法。
•移除方法:DoRelease、showFloatView、hideFloatView。
•请将之前的版本资源删除。
-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 {
// 退出游戏
}
}
});
LdSdkManger.getInstance().init(MainActivity.this, "AppKey", new InitCallBack() {
@Override
public void onSuccess() {
}
@Override
public void onFail(String desc) {
}
});
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进程
}
});
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(字符长度限制:20) | 可选(没有则填填默认值) |
level | 角色等级 | String(字符长度限制:20) | 必填 |
money | 游戏的金币数 | String(字符长度限制:20) | 必填 |
partyName | 公会 | String | 可选(没有则填默认值) |
vipLevel | VIP等级 | int(字符长度限制:20) | 可选(没有则填默认值) |
powerNum | 角色战斗力 | int(字符长度限制:11) | 可选(没有则填默认值) |
参数说明:
参数名 | 中文描述 | 类型 | 是否必填 |
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() {
// 用户取消支付
}});
LdSdkManger.getInstance().showExitView(this, new ExitCallBack() {
@Override
public void onFinish(int code, String desc) {
if (state == 0) {
// code: 0.退出游戏;1.继续游戏;
}
}
});
LdUserInfo ldUserInfo = LdSdkManger.getInstance().getUserInfo();
uid:用户id
isAuthenticated:用户是否实名认证
realName:用户实名认证姓名
birthday:用户实名认证出生日期(格式:20190101)
isAdult:是否成年
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; 是否成年
LdSdkManger.getInstance().quickVipInfo(new VipInfoCallback() {
@Override
public void callback(String json) { // 返回json,方便后续扩展
if (!json.equals("") && !json.equals("{}")) {
// membershipLevel为档位信息
结果返回: 正确示例:{"membershipLevel":1}
}
}
});