帮助文档

SDK下载

1接入说明

1.1、文档面向对象:

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

1.2、注意事项:

● 接口参数大小写敏感。

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

1.3、名词定义

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

1.4、版本更新说明

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。

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

1、更新支付零元购的精度问题。

2024-9-12 v9.2.35:更新方式,重新对接

1、更新加速sdk

2、更新巨量sdk

2024-8-26 v9.2.34:更新方式,可在9.2.33基础上替换为aiqu_sdk_9.2.34.aar及替换speed aar

1、修改加速,更新支持H5加速

2、修改2次登录逻辑

2024-6-25 v9.2.33:更新方式,可在9.2.32基础上直接替换为aiqu_sdk_9.2.33.aar

1、优化登录功能,纪录手机号自动登录

2、修改支付,增加优惠计算

2024-5-20 v9.2.32:更新方式,可在9.2.31基础上直接替换为aiqu_sdk_9.2.32.aar及替换speed aar

1、优化悬浮窗,自动贴边

2024-5-6 v9.2.31:更新方式,可在9.2.30基础上直接替换为aiqu_sdk_9.2.31.aar

1、支持小号回收退出

2、支持小号拉黑退出

2024-3-27 v9.2.30:更新方式,可在9.2.29基础上直接替换为aiqu_sdk_9.2.30.aar

1、支持V2分包渠道号

2、母包不保存登录账户密码

2024-3-14 v9.2.29:更新方式,可在9.2.28基础上直接替换为aiqu_sdk_9.2.29.aar, showfloat添加Activity参数

1、sdk悬浮窗显示方法showfloat添加Activity参数,解决个别游戏上下文失效导致的闪退问题

2023-12-28 v9.2.28:更新方式,可在9.2.27基础上直接替换为aiqu_sdk_9.2.28.aar和aiqu_speed_v2.1.aar

1、sdk加速悬浮窗支持隐藏

2023-11-29 v9.2.27:更新方式,可在9.2.26基础上直接替换为aiqu_sdk_9.2.27.aar

1、sdk支付福利币支持0.1折

2、sdk代码编译版本号提升到30

2023-09-28 v9.2.26:更新方式,可在9.2.25基础上直接替换为aiqu_sdk_9.2.26.aar

1、修复sdk角色上报接口异常导致的闪退问题

2023-07-07 v9.2.25:更新方式,可在9.2.24基础上直接替换为aiqu_sdk_9.2.25.aar

1、修复sdk混淆后和游戏库的冲突问题

2023-05-24 v9.2.24:更新方式,可在9.2.23基础上直接替换为aiqu_sdk_9.2.24.aar

1、修复巨量库缺失LogImpl导致的闪退问题

2023-04-27 v9.2.23:更新方式,参考demo重新对接(存在巨量库缺失LogImpl导致的闪退问题,不要接入,已作废)

1、升级巨量sdk

2、修复悬浮窗跳动问题

2023-03-20 v9.2.21:更新方式,可在9.2.20基础上直接替换为aiqu_sdk_9.2.21.aar

1、修复跳转月卡和省钱卡闪退的bug

2023-03-17 v9.2.20:更新方式,重新对接

1、去除设备和存储权限

2023-03-16 v9.2.19:更新方式,重新对接

1、升级巨量sdk

2、修复用户登录和平台币提示的bug

2022-12-26 v9.2.18:更新方式,可在9.2.16基础上直接替换为aiqu_sdk_9.2.18.aar

1、修复一些bug

2022-11-22 v9.2.16:更新方式,重新对接

1、升级游戏加速

2022-11-04 v9.2.15:更新方式,重新对接

1、修改闪退bug,修改隐私弹窗退出方法

2022-10-31 v9.2.14:更新方式,可在9.2.13或9.2.12基础上直接替换为aiqu_sdk_9.2.14.jar

1、修改隐私协议样式

2022-10-26 v9.2.12:更新方式,可在9.2.11基础上直接替换为aiqu_sdk_9.2.12.jar

1、修复云游闪退

2、修复部分游戏bug

2022-10-09 v9.2.11:更新方式,可在9.2.10基础上直接替换为aiqu_sdk_9.2.11.jar

1、修改保存密码

2、修复游戏bug

2022-09-23 v9.2.10:更新方式,重新对接

1、修改巨量的统计

2、修复游戏bug

2022-08-19 v9.2.9:更新方式,重新对接

1、去除隐私政策,让研发实现,注:一定要要隐藏sdk隐私政策;

2、修复游戏更新闪退bug;

2022-07-29 v9.2.8:更新方式,可在9.2.7基础上直接替换aiqu_sdk_9.2.8.jar

1、修改隐私政策,研发可自定义,注:非特殊需求请不要隐藏sdk隐私政策;

2、修复游戏更新闪退bug;

2022-07-10 v9.2.7:更新方式,重新对接

1、增加游戏加速功能;

2022-07-1 v9.2.6:更新方式,可在9.2.5基础上直接替换为aiqu_sdk_9.2.5.jar

1、修复云游bug;

2022-06-14 v9.2.5:更新方式,按照对接文档,重新对接

1、增加云游戏登录,充值功能;

2022-06-13 v9.2.4:更新方式,按照对接文档,重新对接

1、界面大改版(详见demo);

2、支付接口新增加一个字段cpOrderId(研发订单号)原来的attach字段不用在传研发订单号了

3、恢复老的分包方式

4、修复游戏对接闪退bug

2集成SDK

集成爱趣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文件夹下,打开如图所示界面:

在app gradle下配置

manifestPlaceholders = [APPLOG_SCHEME: "rangersapplog.byAx6uYt".toLowerCase()]

implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.16.9'

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

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

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.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、支付(如开计费必须接入,在弹出隐私弹窗后调用
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 爱趣用户帐号 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 包被混淆。