更新日期:2024-06-06QuickGame(安卓)客户端接入文档
由于SDK内部使用了 oaid-2.1.0 以上版本,所以CP需要提前到移动安全联盟注册账号以及申请对应的参数文件
步骤:
a. 到移动安全联盟官网注册账号并审核通过 http://www.msa-alliance.cn/
b. 账号审核通过后,下载OAID的SDK,找到里面的 csv 文件,填写好游戏包名等信息,然后附邮件发送到 msa@caict.ac.cn 获取对应的证书文件(证书文件有效期为1年,请注意及时更换)
c. 将得到的包名.cert.pem 文件,复制到游戏工程 assets 目录下
依次复制以下资源到您的项目中,包含 assets、libs、res、manifest.xml 里面的资源
资源复制进去后,切记修改 manifest 里面部分包名占位符,以及预设授权登录方式的参数,如不使用授权登录,则保留数默参数 QK0
在项目或 module 的 build.gradle 添加以下依赖(版本只能高不能低)
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61' implementation 'androidx.appcompat:appcompat:1.2.0' //taptap implementation 'cn.leancloud:storage-android:8.2.18' implementation 'cn.leancloud:realtime-android:8.2.18' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'androidx.core:core:1.6.0' implementation 'com.google.android.flexbox:flexbox:3.0.0' //api project(path: ':oaid_1_0_25') api 'com.tencent.vasdolly:helper:3.0.4'
QGManager.showPrivace(MainActivity.this, new QGCallBack() { @Override public void onSuccess() { //下一步游戏申请读写内存和读取设备信息权限,申请完成之后初始化 sdk } @Override public void onFailed(String msg) { // 玩家拒绝协议,游戏执行退出游戏操作 } });
注意:
1. 游戏首次启动的时候要主动调用一次,如果玩家同意了协议,游戏需在本地做个标记,下一次启动时就不再弹出;如果玩家拒绝,那么下次启动还是需要继续弹出,直到玩家允许为止
2. 使用这个接口所展示的协议弹窗,需要在 manifest 内配置隐私协议地址和用户协议地址,否则协议标志点击无效果
2.1.1 设置注销账号回调
QGManager.setLogoutCallback(new QGCallBack() { @Override public void onSuccess() { Toast.makeText(mActivity, "注销成功", Toast.LENGTH_SHORT).show(); //隐藏浮窗 QGManager.hideFloat(); } @Override public void onFailed(String msg) { Toast.makeText(mActivity, "注销失败", Toast.LENGTH_SHORT).show(); } });
注意,一共有两个接口需要调用
QGManager .initMsa (Application application );// 此接口需要在Application的onCreate之中调用,以便于获取 OAID;
/init接口,在主Activty的onCreate中执行或申请权限的回调内执行 QGManager.init(MainActivity.this, "产品号(product_code)", new QGCallBack() { @Override public void onSuccess() { } @Override public void onFailed(String msg) { } });
QGManager.login(MainActivity.this, new QGCallBack() { @Override public void onSuccess() { QGManager.getUID();//获取 UID QGManager.getUserName();//获取 UserName QGManager.getLoginToken();//获取 Token } @Override public void onFailed(String msg) { } });
2.3.1. 静默登录 (不显示登录界面,默认生成账号)
QGManager. slienceLogin (MainActivity.this, new QGCallBack() { @Override public void onSuccess() { QGManager.getUID();//获取 UID QGManager.getUserName();//获取 UserName QGManager.getLoginToken();//获取 Token } @Override public void onFailed(String msg) { } });
2.3.2. 获取登录方式
/** * 获取登录方式 仅在第一次选择时生效 建议游戏做 uid 绑定 防止后续获取到的都是 **自动登录 * 自动登录 0 * 账号登录 1 * 验证码登录 2 * qq 4 * 微信 5 * 阿里云一键授权 6 * taptap 7 */ QGManager.getLoginType();
QGRoleInfo roleInfo = new QGRoleInfo(); roleInfo.setBalance("9999"); roleInfo.setPartyName("天地"); roleInfo.setRoleId("10086"); roleInfo.setRoleName("白富美"); roleInfo.setServerName("888"); roleInfo.setVipLevel("999"); roleInfo.setRoleLevel("999");//等级 roleInfo. setRolePower ("999");//战斗力 QGManager.setGameRoleInfo(MainActivity.this, roleInfo);
QGOrderInfo mOrderInfo = new QGOrderInfo(); QGRoleInfo mRoleInfo = new QGRoleInfo(); //角色信息 mRoleInfo.setRoleId("123546421321"); mRoleInfo.setRoleLevel("1"); mRoleInfo.setRoleName("hhaha"); mRoleInfo.setServerName("zzz"); mRoleInfo.setVipLevel("666"); // 订单信息 mOrderInfo.setAmount("0.01"); mOrderInfo.setCount(1); //数量 mOrderInfo.setExtrasParams("2017110403"); //透传参数 mOrderInfo.setPayParam("eedwd");// 商品描述 mOrderInfo.setOrderSubject("钻石"); // 商品名称 mOrderInfo.setProductOrderId("2017110403");//cp 订单号 QGManager.pay(MainActivity.this, mRoleInfo, mOrderInfo, new QGCallBack() { @Override public void onSuccess() { } @Override public void onFailed(String msg) { } });
2.5.1 统计支付信息(非必接)
//游戏确认到账发货时调用 QGManager.adPayStatistics(QGManager.getUID(), QGManager.getUserName(), "角色 id", "订单号", "商品 id", "商品名称", 总 价, 货币);
QGManager.logout(MainActivity.this);
@Override protected void onPause() { super.onPause(); QGManager.hideFloat(); } @Override protected void onResume() { super.onResume(); if (!TextUtils.isEmpty(QGManager.getUID())) { QGManager.showFloat(); } }
QGManager.exit(MainActivity .this, new QGCallBack() { @Override public void onSuccess() { finish(); } @Override public void onFailed(String msg) { } });
QGManager.showFloat(true/false); //true: 浮窗默认倚靠屏幕左边 QGManager.hideFloat();
2.10.1. 开启QQ授权登录
请修改 manifest 配置中的以下 2 处的QQ参数:
注意:meta-data 的 value 格式为 android:value="QK+QQ的appid"
2.10.2. 开启微信授权登录
如果游戏需要使用微信登录,需要将参数配置到manifest文件中的指定位置,并新建一个WXEntryActivity类,继承QGWXEntryActivity类,放到包名.wxapi路径下(例如com.xxx.xxx.wxapi.WXEntryActivity),然后在manifest中注册该Activity;此处可参照demo处理;如果不使用,则保持默认的0
注意:meta-data 的 value 格式为 android:value="QK+微信的 appid 或 appkey"
2.10.3. 获取微信/QQ 的OpenID
public void getExtUserInfo() { String openId = QGManager.getExtInfo().getOauthId(); // 获取微信/qq 的 openId int openType = QGManager.getExtInfo().getOauthType(); // openType: 4 是微信 // 5 是 qq }
2.10.4. 阿里云手机号一键授权登录
修改 manifest 中的阿里云的参数
注意:
1. meta-data 的 value 格式为 android:value="QK+游戏的阿里云参数"(ps:阿里云此处的 key 长度非常长,最少128 位以上),并且要保证游戏的包名以及签名要跟阿里云后台申请产品时,所填入的信息一致。 测试时请保证插入了 sim 卡并且打开了移动网络
2. 此处设置之后,还需要将阿里云后台的appid配置到,SDK后台-拓展配置-手机号一键登录处
2.10.5. TapTap授权登录
修改manifest里,TapTap登录的参数
注意:meta-data 的 value 格式为 android:value="QK+游戏的 appid 或 appkey"
获取玩家实名年龄接口:
QGManager.getAge(); // 返回 int 值,如果未实名则返回 0 ;
获取是否实名认证:
QGManager.getRealName() ;
如果游戏需要上头条或者快手买量,需要在manifest里配置下头条/快手的参数(将QK后续的字段替换为对应买量SDK的参数)
注意:meta-data 的 value 格式为 android:value="QK+头条/快手的appid 或 QK+自定义channelName",channelName的值游戏自行定义
如想使用盒子的分包标识,请在打包时进行以下操作:
1. 通过聚合工具出包
在QuickSDK后台,添加自定义参数 gamebox_Package ,参数值配置为游戏盒子的包名,一定要填写正确的盒子包名,然后保存参数重新打包
2. 直接接入QuickGameSDK
请在游戏工程内配置如下meta-data
value的值为QK+游戏盒子的包名,例如QKcom.test.gamebox
李先生:13880511661
QQ:48157910
赵先生:15390049857
QQ:1077535763
孙女士:13551010407
QQ:1799614139
QQ群:698731538