帮助文档

SDK下载

1接入说明

1.1、文档面向对象:

接入厂商的产品,技术人员,平台技术人员。

使用本sdk,需三方通过交互式界面展示《爱趣游戏SDK合规使用说明》《爱趣游戏SDK隐私政策》并获取用户同意

或者调用本SDK内部提供的隐私政策弹框,详见2.4.2

1.2、注意事项:

● 接口参数大小写敏感。

● request和response的编码格式为UTF-8。

1.3、名词定义

名称 说明
CP 游戏合作商
APP 接入平台的游戏
APP_ID 接入时由平台分配的游戏ID。
运营方 运营商sdk_lib

1.4、版本更新说明

2026-4-13 v10.0.0:更新方式,重新对接

1、页面样式更改

2、sdk包名修改

2025-04-14 v9.3.0:更新方式:在v9.2.39的基础上替换 aiqu_sdk_v9.3.0.aar,支付新增sign参数,参考demo

1、支付接口新增参数sign,支付校验

2025-1-17 v9.2.39:更新方式,在v9.2.38的基础上替换 GMTBOX.aar aiqu_sdk_v9.2.39.aar

1、更新加速

2025-1-10 v9.2.38:更新方式,重新对接

1、更新加速

2、更新巨量sdk版本

2024-10-22 v9.2.37:更新方式,重新对接

1、修复已知bug。

2集成SDK

集成爱趣SDK,配置清单文件AndroidMamifest.xml

2.1、步骤1,获取必要的参数

从平台处,获取以下参数,用于对接

参数 说明
WANCMS_GAMEID 游戏ID
WANCMS_APPID 应用ID
WANCMS_AGENT 此次对接demo的渠道名(默认cps001)
WANCMS_DEBUG 是否开启SDK日志(1开启 0关闭)
Hum_Id 抖音推广Id

2.2、步骤2,导入SDK

文档以AndroidStudio开发环境为例

2.2.1、导入jar包:

将库文件导入libs文件夹下(库文件版本号可能和图片不一致,具体以demo中的库版本号为准),打开如图所示界面:

2.2.2、在app gradle下依赖配置(参考demo):

implementation 'com.bytedance.ads:AppConvert:2.0.0'

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61'

implementation 'androidx.appcompat:appcompat:1.3.1'

implementation 'com.tencent.tbs:tbssdk:44286'

implementation 'org.lsposed.hiddenapibypass:hiddenapibypass:6.1'

2.2.3、在app gradle下packagingOptions配置(参考demo):

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.3、弹出隐私权限,爱趣sdk的《用户协议》《隐私政策》《儿童个人信息保护规则及监护人须知》《第三方服务共享清单》,申请Manifest.permission.WRITE_EXTERNAL_STORAGE和Manifest.permission.READ_PHONE_STATE两个权限
研发需要复制爱趣sdk的《用户协议》和《隐私政策》到游戏的用户协议和隐私政策中,sdk的《用户协议》和《隐私政策》和申请权限都是让研发自行处理。
用户如果拒绝权限,务必保证再次启动游戏不再申请权限,打扰用户
这样做可以避免应用市场检测违规。请研发配合。爱趣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(MainActivity.this,
				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、支付(如开计费必须接入,在弹出隐私弹窗后调用
// 构建sign md5(appkey+gameid+orderid+roleid+username)
// sign值若传 "" 或者不传,则不进行支付二次校验
String sign = "";
                
WancmsSDKManager.getInstance(MainActivity.this).showPay("caobawang158", money, "1", "杀人书",
          "金币", "re45465", "",sign, 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,String sign, OnPaymentListener listener)

参数说明:

参数名 类型 参数说明
roleid String 角色ID
money String 充值金额
serverid String 区服id
productname String 产品名称
productdesc String 产品描述
cpOrderId String 研发订单号
attach String 拓展参数
sign 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 爱趣用户帐号 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混淆

爱趣_SDK 包是以 aar 包文件提供给用户的,其中 jar 包已经半混淆状态, 您在混淆自己 APK 包的时候请不要将 爱趣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
以避免爱趣SDK 的相关的 jar 包被混淆。