帮助文档

SDK下载

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 包被混淆。