帮助文档

SDK下载

1接入说明

1.1、爱趣游戏SDK基本信息:

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

SDK隐私政策披露要求与示例

开发者在App集成爱趣游戏SDK后,爱趣游戏SDK的正常运行会收集必要的最终用户信息用于展示内容及向最终用户推荐可能感兴趣的内容。 请开发者根据集成爱趣游戏SDK的实际情况,在您App的隐私政策 中,对爱趣游戏SDK名称、公司名称、处理个人信息种类及目的、采集方式、隐私政策链接等内容进行披露。

披露示例(仅供参考,请以实际合作情况为准):

SDK名称: 爱趣游戏SDK

第三方名称: 昆山爱趣网络科技有限公司

收集的个人信息类型: 设备信息(设备品牌、型号、操作系统版本、系统语言、屏幕分辨率、网络状态、IP地址);AndroidID、OAID为默认关闭的可选配置(如需获取请联系SDK技术人员);应用信息(游戏版本号、游戏包名、游戏ID、爱趣游戏SDK版本、应用安装状态);用户信息(姓名、身份证号码、手机号、账号ID、用户昵称及头像);

使用目的: 为游戏联合运营提供登录、支付、运营(社区、群聊、客服)、游戏工具支持服务

SDK隐私政策链接:https://oss.aiqu.com/xieyi/sdk/ysxy.html

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

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

1.2、注意事项:

● 接口参数大小写敏感。

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

1.3、名词定义

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

1.4、版本更新说明

2026-7-16 v11.1.0:更新方式:重新对接并按照本版本隐私初始化流程调整调用顺序

1、修改合规说明;

2026-5-21 v10.0.1:更新方式,在v10.0.0的基础上替换 aiqu_sdk_v10.0.1.aar

1、修改合规说明

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 fileTree(include: ['*.aar'], dir: 'libs')

implementation fileTree(include: ['*.jar'], dir: 'libs')

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'

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"

exclude 'lib/armeabi/libc++_shared.so'
exclude 'lib/armeabi/libaspruntime.so'
exclude 'lib/armeabi/libaihe_runtime.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);          
            

该接口仅读取本地Manifest配置并调用友盟UMConfigure.preInit,不采集设备信息、不上报数据、不初始化巨量或其他第三方SDK,也不发起爱趣业务网络请求。

2.4.2、初始化sdk(在游戏工程主activity的onCreate中最开始调用
在游戏工程主activity的onCreate中调用WancmsSDKManager.initSdkOnCreateFirst(MainActivity.this)。
            
2.4.3、展示并取得用户对爱趣sdk《用户协议》《隐私政策》《儿童个人信息保护规则及监护人须知》《第三方服务共享清单》的明确同意
研发需要在游戏隐私政策中完整披露爱趣SDK的数据处理规则。用户拒绝隐私政策时,不得调用showLogin及其他SDK业务接口。
如果研发没有隐私弹窗,可以参考Demo调用
DialogUtil.popAgreementView(mContext, new DialogUtil.AgreeCallback() { @Override public void onAgree() { isAgreeAgreement = true; } });
2.4.4、登录(必须接入,在用户明确同意隐私政策后调用
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.5、支付(如开计费必须接入,在弹出隐私弹窗后调用
// 构建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.6、提交角色信息(必须接入,在弹出隐私弹窗后调用

提交玩家在游戏内的角色信息,提交时机:在玩家创建角色或角色等级发生变化时调用

    try {
        JSONObject json = new JSONObject();
        json.put("time", "20170417");
        wancmssdkmanager.setRoleDate(this, "caobawang11", "草霸王", "100",
            "1", "wancms", json);
      } catch (JSONException e) {
        e.printStackTrace();
      }        
            
2.4.7、sdk回收资源(在游戏内切换账号,退出游戏场景调用

调用场景是游戏自身的切换账号,退出游戏。和sdk内部场景无关

WancmsSDKManager.getInstance(this).recycle();       
            

2.5、配置混淆

注:如果当前应用开启了加密 minifyEnabled true,一定要记得配置混淆,在proguard-rule.pro 文件中添加

#aiqu
-keep class com.longshao.aiquyouxi.** {*;}
-keep class com.aiqu.sdk.**{*;}
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.bytedance.** {*;}
-keepattributes *Annotation*
-keepattributes Signature

# aiqu toolbox
-keep class com.aiqu.toolbox.** { *; }
-keepclassmembers class * {
native ;
}
            

3Api说明

3.1、初始化

接口定义:

public static 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
-keep class com.longshao.aiquyouxi.** {*;}
-keep class com.aiqu.sdk.**{*;}
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.bytedance.** {*;}
-keepattributes *Annotation*
-keepattributes Signature

# aiqu toolbox
-keep class com.aiqu.toolbox.** { *; }
-keepclassmembers class * {
native <methods>;
}

以避免爱趣SDK 的相关的 jar 包被混淆。