1接入说明
1.1、文档面向对象:
接入厂商的产品,技术人员,平台技术人员。
1.2、注意事项:
● 接口参数大小写敏感。
● request和response的编码格式为UTF-8。
1.3、名词定义
名称 | 说明 |
---|---|
CP | 游戏合作商 |
APP | 接入平台的游戏 |
APP_ID | 接入时由平台分配的游戏ID。 |
运营方 | 运营商sdk_lib |
2025-04-14 v1.1.0:更新方式:在1.0.23的基础上替换 zhiqu_sdk_v1.1.0.aar,支付新增sign参数,参考demo
1、更新加速。
2025-01-17 v1.0.23:更新方式,在1.0.22的基础上替换 GMTBOX.aar zhiqu_sdk_v1.0.23.aar
1、更新加速。
2025-01-10 v1.0.22:更新方式,重新对接
1、更新加速。
2、更新巨量版本。
2024-09-12 v1.0.21:更新方式,重新对接
1、更新巨量sdk。
2、更新加速sdk。
2024-08-26 v1.0.20:更新方式,重新对接
1、修改2次登录逻辑。
2024-08-12 v1.0.19:更新方式,重新对接
1、加速功能。
2024-08-02 v1.0.18:更新方式,重新对接
1、添加群聊功能。
2024-07-10 v1.0.17:更新方式,重新对接
1、修改加速功能。
2024-07-03 v1.0.16:更新方式,重新对接
1、修改客服页面。
2024-06-28 v1.0.15:更新方式,重新对接
1、修改微信支付。
2、支付添加赠送余额。
3、支付添加可拆分优惠券。
2024-05-20 v1.0.14:更新方式,重新对接
1、优化悬浮窗,自动贴边。
2、小号被交易或拉黑后退出游戏功能。
2024-04-01 v1.0.13:更新方式,重新对接
1、去除快手sdk,解决高能手办团游戏闪退问题。
2024-03-26 v1.0.12:更新方式,重新对接
1、支持安卓云游戏。
2、SDK支持小号交易后重新登录。
2024-03-15 v1.0.11:更新方式,重新对接
1、升级一键登录SDK版本。
2、SDK支持V2签名方式获取渠道号。
3、优化悬浮窗,竖屏左右靠边展示。
2024-03-01 v1.0.10:更新方式,重新对接
1、优化悬浮窗,靠边展示。
2023-12-26 v1.0.9:更新方式,重新对接
1、游戏盒子菜单是否显示由接口控制。
2023-12-20 v1.0.8:更新方式,重新对接
1、修复云游戏环境账号记录问题。
2、下载对话框接口控制显示及悬浮窗右上角显示礼包。
2023-11-1 v1.0.7:更新方式,重新对接
1、修复云游戏环境账号记录问题。
2、加速接口控制显示及最大速度。
2023-10-11 v1.0.6:更新方式,重新对接
1、添加一键登录功能;
2、加速UI优化及加速初始化优化。
3、修改未开服游戏限制到小号页面;余额为0也展示余额支付通道。
2023-09-08 v1.0.5:更新方式,重新对接
1、初始化sdk后默认关闭加速游戏功能;
2、优化支付界面。
2023-09-04 v1.0.4:更新方式,重新对接
1、增加加速隐藏功能,优化支付界面;
2023-06-19 v1.0.3:更新方式,重新对接
1、增加折前券,升级加速;
2023-06-19 v1.0.2:更新方式,可在v1.0.0基础上替换为aiqu_sdk_v1.0.1
1、增加抵扣券功能;
2023-06-19 v1.0.1:更新方式,按照对接文档和demo,对接
1、sdk第一次上线;
2集成SDK
集成0.1折SDK,配置清单文件AndroidMamifest.xml
2.1、步骤1,获取必要的参数
从平台处,获取以下参数,用于对接
参数 | 说明 |
---|---|
WANCMS_GAMEID | 游戏ID |
WANCMS_APPID | 应用ID |
WANCMS_AGENT | 此次对接demo的渠道名(默认cps001) |
Hum_Id | 抖音推广Id |
2.2、步骤2,导入SDK
文档以AndroidStudio开发环境为例
导入jar包:
将库文件导入libs文件夹下(库文件版本号可能和图片不一致,具体以demo中的库版本号为准),打开如图所示界面:

在app gradle下配置
implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.14.3'
implementation 'com.bytedance.applog:RangersAppLog-All-convert:6.14.3'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.tencent.tbs:tbssdk:44286'
packagingOptions {
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/x86/*.so"
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/x86_64/*.so"
doNotStrip "armeabi.so"
doNotStrip '*/armeabi-v7a/libsygamehelper.cy.so'
doNotStrip '*/arm64-v8a/libsygamehelper.cy.so'
}
注:切勿忘记配置,否则会导致游戏闪退
2.3、步骤3,配置AndroidManifest.xml
注:如果游戏工程android版本大于等于28则manifest 文件Application段内加上这句代码android:usesCleartextTraffic="true" 如果低于28则不要加,否则游戏工程会报错编译不成,如果application icon name冲突,请加上tools:replace="android:icon,android:name"若有误差,以Demo为准
配置参数:
具体见Demo
<meta-data android:name="WANCMS_GAMEID" android:value="1" /> <meta-data android:name="WANCMS_APPID" android:value="1" /> <meta-data android:name="WANCMS_AGENT" android:value="cps001" /> <meta-data android:name="WANCMS_DEBUG" android:value="1" /> <meta-data android:name="Hum_Id" android:value="316328" />
2.4、步骤4,SDK业务接口
SDK接口均在UI线程中调用,具体参见Demo
2.4.1、预初始化(在弹出隐私政策前调用)
首先进行WancmsSDKManager预初始化:在游戏工程Application中调用WancmsSDKManager.preInit(this);
2.4.2、初始化sdk(在游戏工程主activity的onCreate中最开始调用)
进行加速SDK初始化:在游戏工程主activity的onCreate中最开始调用WancmsSDKManager.initSdkOnCreateFirst(MainActivity.this);
2.4.2、弹出隐私权限,0.1折sdk的《用户协议》和 《隐私政策》,《儿童个人信息保护规则及监护人须知》和《第三方服务共享清单》,申请Manifest.permission.WRITE_EXTERNAL_STORAGE和Manifest.permission.READ_PHONE_STATE两个权限
研发需要复制0.1折sdk的《用户协议》和《隐私政策》到游戏的用户协议和隐私政策中,sdk的《用户协议》和《隐私政策》和申请权限都是让研发自行处理。
用户如果拒绝权限,务必保证再次启动游戏不再申请权限,打扰用户
这样做可以避免应用市场检测违规。请研发配合。0.1折sdk的其他业务接口必须在隐私弹窗后才能调用。
如果研发没有隐私弹窗可以调用sdk的,具体参考demo,调用DialogUtil.popAgreementView。
2.4.3、登录(必须接入,在弹出隐私弹窗后调用)
WancmsSDKManager.getInstance(MainActivity.this).showLogin(new OnLoginListener() { @Override public void loginSuccess(LogincallBack logincallback) { showFloatView(); //sdk显示悬浮窗 Toast.makeText( getApplication(), "登录成功\nsign:" + logincallback.sign + " logintime:" + logincallback.logintime + " username:" + logincallback.username, Toast.LENGTH_LONG) .show(); } @Override public void loginError(LoginErrorMsg errorMsg) { Toast.makeText(getApplication(), errorMsg.msg, Toast.LENGTH_LONG).show(); } });
2.4.4、sdk显示悬浮窗(必须接入,在登录成功后调用)
参数是切换账号监听接口,在sdk悬浮窗内切换账号按钮被用户点击时回调
private void showFloatView() { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { WancmsSDKManager.getInstance(MainActivity.this).showFloatView(new OnLogoutListener() { @Override public void logoutSuccess(LogoutcallBack logoutncallback) { Toast.makeText(getApplication(), "用户" + logoutncallback.username + "退出登录", Toast.LENGTH_LONG).show(); doLogin(); } @Override public void logoutError(LogoutErrorMsg errorMsg) { } }); } }, 1000); }
2.4.6、支付(如开计费必须接入,在弹出隐私弹窗后调用)
WancmsSDKManager.getInstance(MainActivity.this).showPay("caobawang158", money, "1", "杀人书", "金币", "re45465", "", new OnPaymentListener() { @Override public void paymentSuccess( PaymentCallbackInfo callbackInfo) { Toast.makeText( getApplication(), "充值金额数" + callbackInfo.money + " 消息提示:" + callbackInfo.msg, Toast.LENGTH_LONG).show(); } @Override public void paymentError(PaymentErrorMsg errorMsg) { Toast.makeText( getApplication(), "充值失败:code:" + errorMsg.code + " ErrorMsg:" + errorMsg.msg + " 预充值的金额:" + errorMsg.money, Toast.LENGTH_LONG).show(); } });
2.4.7、提交角色信息(必须接入,在弹出隐私弹窗后调用)
提交玩家在游戏内的角色信息,提交时机:在玩家创建角色或角色等级发生变化时调用
try { JSONObject json = new JSONObject(); json.put("time", "20170417"); wancmssdkmanager.setRoleDate(this, "caobawang11", "草霸王", "100", "1", "wancms", json); } catch (JSONException e) { e.printStackTrace(); }
2.4.8、sdk回收资源(在游戏内切换账号,退出游戏场景调用)
调用场景是游戏自身的切换账号,退出游戏。和sdk内部场景无关
WancmsSDKManager.getInstance(this).recycle();
3Api说明
3.1、初始化
接口定义:
public void preInit(Context context)
参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
context | Context | Context对象,确保为游戏Application |
3.2、获取SDK实例
GameSDK实例可通过WancmsSDKManager.getInstance(this)获取,SDK的一些功能需要再等在初始化完成之后才能使用
3.3、登录
接口定义:
public void showLogin(OnLoginListener listener)
参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
listener | OnLoginListener | 登录接口的回调 |
3.4、登录回调说明
loginSuccess()
回调参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
logincallback | LogincallBack | 登录成功后,登录验签的相关字段 |
loginError()
参数名 | 类型 | 参数说明 |
---|---|---|
errorMsg | LoginErrorMsg | 错误说明 |
3.5、支付
接口定义:
public void showPay(String roleid, String money, String serverid, String productname, String productdesc, String cpOrderId, String attach, OnPaymentListener listener)
参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
roleid | String | 角色ID |
money | String | 充值金额 |
serverid | String | 区服id |
productname | String | 产品名称 |
productdesc | String | 产品描述 |
cpOrderId | String | 研发订单号 |
attach | String | 拓展参数 |
listener | OnPaymentListener | 支付接口回调 |
3.6、支付回调
paymentSuccess()
回调参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
callbackInfo | PaymentCallbackInfo | 支付成功回调参数 |
paymentError()
回调参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
errorMsg | PaymentErrorMsg | 支付失败说明 |
说明:
onExit():玩家点击“确认退出”的回调,调用sdk回收资源接口
onBackGame():玩家点击“返回游戏”的回调
3.7、提交角色信息
接口定义:
public void setRoleDate(final String roleId, final String roleName, final String roleLevel, final String serverId, final String serverName, final JSONObject ext)
参数说明:
参数名 | 类型 | 参数说明 |
---|---|---|
roleId | String | 角色id |
roleName | String | 角色名 |
roleLevel | long | 角色等级 |
serverId | String | 区服id |
serverName | String | 区服名 |
ext | JSONObject | 拓展参数(例如JSONObject json = new JSONObject(); son.put("time", "20170417");) |
3.8、回收资源
接口定义:
public void recycle()
注:游戏退出 切换账号必须调用
4登录验签
参数签名规则:
参数名 | 类型 | 参数说明 | 签名顺序 |
---|---|---|---|
username | String | 0.1折用户帐号 | 1 |
appkey | String | 应用 appkey | 2 |
logintime | String | 登陆时间,时间戳格式 | 3 |
签名字符串示例: sign=MD5(“username=t315688&appkey=91bac46a9b70bd2db563cc483d443ba3&logintime =1395634100”)
生成md5摘要后和登录接口返回的sign进行比对
5运行环境
● 目前该 sdk 只支持 Android 2.2 或以上版本的手机系统
● 手机必须处于网络环境中,2.5G/3G/WIFI 等等
6混淆
0.1折_SDK 包是以 aar 包文件提供给用户的,其中 jar 包已经半混淆状态, 您在混淆自己 APK 包的时候请不要将 0.1折SDK 的 jar
包一起混淆,因为里面有自定义UI控件,若被混淆后会因为无法找到相关类而抛异常。您可以在用ant 构 建混淆包的 build.xml里面对应位置或者在 proguard.cfg里加入:
#aiqu
-libraryjars libs/alipaySdk-20190725.jar
-libraryjars libs/cloud_game_sdk_v1.0.0.jar
-libraryjars libs/core-3.3.0.jar
-libraryjars libs/gson-2.7.jar
-libraryjars libs/umeng-asms-armeabi-v1.6.3.jar
-libraryjars libs/umeng-common-9.5.0.jar
-keep class com.longshao.aiquyouxi.** {*;}
-keep class com.wancms.sdk.**{*;}
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.bytedance.** {*;}
-keepattributes *Annotation*
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.mobilesecuritysdk.*
-keepattributes Signature
-keep class com.ut.*
# gm speed
-keep class com.ssy185.sdk.api.**{*;}
-keep class com.ssy185.sdk.common.base.inerface.**{*;}
-keep class com.bytedance.shadowhook.**{*;}
-keep class com.google.gson.**{*;}
-keep class com.ssy185.a.**{*;}
-keep class com.ssy185.a0.**{*;}
-keep class com.ssy185.app.**{*;}
-keep class com.ssy185.b.**{*;}
-keep class com.ssy185.b0.**{*;}
-keep class com.ssy185.c.**{*;}
-keep class com.ssy185.c0.**{*;}
-keep class com.ssy185.d.**{*;}
-keep class com.ssy185.d0.**{*;}
-keep class com.ssy185.e.**{*;}
-keep class com.ssy185.e0.**{*;}
-keep class com.ssy185.f.**{*;}
-keep class com.ssy185.f0.**{*;}
-keep class com.ssy185.feature.h.**{*;}
-keep class com.ssy185.g.**{*;}
-keep class com.ssy185.g0.**{*;}
-keep class com.ssy185.h.**{*;}
-keep class com.ssy185.i.**{*;}
-keep class com.ssy185.j.**{*;}
-keep class com.ssy185.k.**{*;}
-keep class com.ssy185.l.**{*;}
-keep class com.ssy185.m.**{*;}
-keep class com.ssy185.n.**{*;}
-keep class com.ssy185.o.**{*;}
-keep class com.ssy185.p.**{*;}
-keep class com.ssy185.q.**{*;}
-keep class com.ssy185.r.**{*;}
-keep class com.ssy185.s.**{*;}
-keep class com.ssy185.sdk.common.base.lifecycle.**{*;}
-keep class com.ssy185.sdk.feature.adapter.**{*;}
-keep class com.ssy185.sdk.feature.floatview.**{*;}
-keep class com.ssy185.sdk.feature.view.**{*;}
-keep class com.ssy185.sdk.gadget.**{*;}
-keep class com.ssy185.sdk.gamehelper.**{*;}
-keep class com.ssy185.sdk.java_hook.**{*;}
-keep class com.ssy185.sdk.server.**{*;}
-keep class com.ssy185.t.**{*;}
-keep class com.ssy185.u.**{*;}
-keep class com.ssy185.v.**{*;}
-keep class com.ssy185.w.**{*;}
-keep class com.ssy185.x.**{*;}
-keep class com.ssy185.y.**{*;}
-keep class com.ssy185.z.**{*;}
-keep class com.tencent.smtt.export.external.interfaces.**{*;}
-keep class com.tencent.smtt.sdk.**{*;}
-keep class kotlin.**{*;}
-keep class top.canyie.pine.**{*;}
-keep class androidx.** {*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public
# gm speed end
以避免0.1折SDK 的相关的 jar 包被混淆。