SDK添加渠道对接文档(内部接入使用)
一、创建项目:
1、在_Tool目录里的CreateProject(as)目录下使用CreateProject.bat创建添加渠道的模板工程,该工程为android studio工程,(需先在电脑上安装python3)
二、对接添加渠道接口
1、注意。导入创建的模板工程,需要添加渠道对接接口代码写在模板工程下的PoolProxyChannel类 。
onCreate中一般添加渠道的初始化功能,在渠道初始化有回调通知的时候需要在初始化接口调用之前设置
PoolSdkHelper.hasInit = true(默认是false)
(若果渠道SDK无初始化回调,则设置为false即可,同时下面的“渠道的回调方法中将结果通知游戏”操作则不再需要),设置为true后在渠道的回调方法中将结果通知游戏,如下例:
if(isSuccess){
callBackListener.poolSdkCallBack(PoolSDKCode.POOLSDK_INIT_SUCCESS, msg);
}else{
callBackListener.poolSdkCallBack(PoolSDKCode.POOLSDK_INIT_FAIL, msg);
}
2、接口说明(重点)
获取渠道参数说明:
PoolSdkConfig.getConfigByKey(“appId”)
PoolSdkConfig.getConfigByKey(“appKey”)
测试时直接将对应的值填到assets/poolsdk.xml下,Key 根据渠道sdk而定,测试后填到公共SDK网页平台上,保持命名一致。
登录:
login(Activity paramActivity, String paramCustom)
参数名称 参数说明
paramActivity Activity
paramCustom 扩展参数(直接返回回游戏)
在login方法里面写调用渠道的login接口,调用渠道login接口返回成功的地方调用loginCheck进行与PoolSDK服务端登录验证,样例如下:
调用渠道login接口返回失败处就直接返回失败,例如:
充值接口:
pay(Activity paramActivity, final PoolPayInfo yaPayInfo)
参数名称 参数说明
paramActivity Activity
PoolPayInfo 充值参数实体类
在pay方法中处理要添加渠道的充值方法
在调用渠道充值接口前要先与PoolSDK服务端创建充值订单,在创建订单成功回调方法中处理添加渠道的充值相关,订单创建失败直接回调充值失败方法。代码样例如下:
注意:创建订单成功后的queryId必须传给服务器,一般传sdk自定义参数字段,没有要和服务器商议看放在哪个字段传。
设置横竖屏样例:
提交角色数据接口:(submitRoleData)
submitRoleData(Activity paramAct,PoolRoleData,prd)
参数名称 参数说明
Activity activity
PoolRoleData 提交角色数据实体类
代码样例如下:
打开渠道中心接口:
如果sdk有用户中心接口,在hasChannelCenter方法中设置返回true,并在openChannelCenter接口实现打开SDK用户中心,没有则返回false.
openChannelCenter(Activity paramActivity)
代码样例:
切换账号接口:
如果渠道SDK有切换账号接口,则在hasSwitchAccount设置返回true,并实现switchAccount方法;如果SDK没有切换账号接口,则直接返回false,无需实现switchAccount方法。
switchAccount(Activity paramActivity,String paramCustom)
在此方法中调用渠道的切换账号接口
显示退出框接口
如果sdk有退出页面,hasExitDialog返回true,在下面接口实现,没有则返回false.
showExitDialog(Activity paramActivity)
注意:在相应时候返回 确认退出和取消退出 ,对应的Code 在PoolSDKCode,要统一使用。
游戏退出清理数据接口:(逐步不使用,清理sdk数据统一在sdk退出接口或者是onDestroy()
exitGame(Activity paramActivity)
打开论坛接口:
openForm(Activity paramActivity)
生命周期接口:
根据渠道SDK要求接入相应的生命周期方法。
至此,渠道SDK的接入已经完成。
接入完毕提交前自检步骤:
1、登陆后收到数据尽量多的返回给游戏,只要是sdk有返回的是否已经全部传递,充值queryid传递正确,汇率正确。
2、监听接口返回给游戏:登陆失败,取消登陆,退出游戏,取消退出,可根据PoolSDKCode里面的字段检查,sdk有的是否返回监听。
附加注意点:
1、当渠道存在微信支付时需要添加微信对应的WXEntryActivity时,将接入Demo的apk使用apktool工具进行反编译,然后找到对应的WXEntryActivity.smali文件,将此文件内的所有包含包名的地方替换为Lcom/myexample/wegame,之后将此文件放到ForFiles文件夹下,最后在config.xml中添加
2、在渠道需要修改参数配置时注意点:(参考ysdk渠道)
渠道参数文件要在assets目录中,渠道参数字段需要一行对应一个字段,后台填写字段要与配置文件字段一一对应。Config.xml配置如下:
<operate from=”assets” name=”ysdkconf.ini”type=”modifyConfig” />
3、在需要修改打包后apk中manifest中四大组件标签的增加, 删除,修改操作时需要对config.xml添加配置:(可参考Tools下 对应的manifest模板)
====================================================================================================================
1、如渠道要求继承他们自身的application类
只需要在 PoolSDKApplication 继承他们的即可
publicclass PoolSDKApplication extends TWApplication {
}
2、如在此类需要使用自定义参数要先调用
PoolSdkConfig.readPoolSdkConfigData(this);
@Override
publicvoid onCreate() {
super.onCreate();
PoolSdkConfig.readPoolSdkConfigData(this);
PoolSdkConfig.getConfigByKey("APPID");
}
3、PoolUtils.isLandscape在application类此方法判断横竖屏无效,请使用上面第二点的方式让游戏自己填写横竖屏
@Override
publicvoid onCreate() {
super.onCreate();
PoolSdkConfig.readPoolSdkConfigData(this);
PoolSdkConfig.getConfigByKey("APPID");
if (PoolSdkConfig.getConfigByKey("landscape").equals("true")) {
//横屏
} else {
//竖屏
}
}
4、渠道SDK的生命周期等方法都写在类中
如渠道SDK有初始化回调操作(即未收到初始化成功不能调用其他的接口)
则在onCreate接口把 PoolSdkHelper.hasInit = true;设置为true
然后在渠道SDK接口回调中调用
//通知游戏渠道SDK初始化成功
instance.callBackListener.poolSdkCallBack(PoolSDKCode.POOLSDK_INIT_SUCCESS, PoolSDKCode.$初始化成功$);
或者
//通知游戏渠道SDK初始化失败
instance.callBackListener.poolSdkCallBack(PoolSDKCode.POOLSDK_INIT_FAIL, PoolSDKCode.$初始化失败$);
来通知到游戏客户端
5、在PoolProxyChannel.java类中,判断游戏横竖屏可以使用 PoolUtils.isLandscape 方法
6、通知游戏渠道SDK已经注销账号成功 logoutListener.onLogoutSuccess();
7、切换账号成功通过loginCheck服务端校验成功返回新的登录信息给游戏
8、渠道SDK有用户中心
@Override
publicboolean hasChannelCenter(Activity paramActivity) {
// 这里返回给游戏渠道SDK是否有用户中心接口
returntrue;
}
@Override
publicvoid openChannelCenter(Activity paramActivity) {
//在此处调用渠道SDK打开用户中心
XXX.openChannelCenter();
}
9、渠道SDK有自己的退出游戏面板
@Override
publicboolean hasExitDialog() {
// 这里返回给游戏渠道SDK是否有退出游戏面板
returntrue;
}
此处红色接口为某渠道SDK的退出接口例子
@Override
publicvoid showExitDialog(Activity paramActivity) {
XXX.showExitDialog(paramActivity, newXXXCallback() {
@Override
publicvoid onSuccess() {
// 回调游戏退出成功
exitDialogListener.onDialogResult(PoolSDKCode.EXIT_SUCCESS, PoolSDKCode.$退出成功$);
}
@Override
publicvoid onCancle() {
// 继续游戏
exitDialogListener.onDialogResult(PoolSDKCode.EXIT_CANCEL, PoolSDKCode.$取消退出$);
}
});
}
10、渠道SDK有注销账号接口(注销的回调接口需调用第6点方法 logoutListener.onLogoutSuccess();通知游戏)
@Override
publicboolean hasLogout() {
returntrue;
}
@Override
publicvoid logout(Activity paramActivity) {
XXX.logout();
}
11、渠道SDK有自定义的闪屏,需要我们继承他们的闪屏入口,跳转到游戏Activity可以使用
Intent intent = new Intent();
PoolSdkConfig.readPoolSdkConfigData(this);
ComponentName component = new ComponentName(this.getPackageName(), PoolSdkConfig.getConfigByKey(“MainActivity”));
intent.setComponent(component);
startActivity(intent);
this.finish();
MainActivity=“”配置游戏的 launcher activity 路径
SDK的配置文件需要添加
其中 ReplaceManifestTagB 为后台配置的参数 填入游戏的 launcher activity 路径
12、提交角色参数接口
@Override
publicvoid submitRoleData(Activity paramActivity, PoolRoleInfo poolRoleInfo) {
// String type = poolRoleInfo.getCallType();
// if (type.equals(PoolRoleInfo.Type_CreateRole)) {
// 写入渠道SDK提交创建角色信息
// } else if (type.equals(PoolRoleInfo.Type_EnterGame)) {
// 写入渠道SDK提交进入游戏信息
// } else if (type.equals(PoolRoleInfo.Type_RoleUpgrade)) {
// 写入渠道SDK提交角色升级信息
// }
}
公共SDK只有 创建角色 、进入游戏 、角色升级这3种状态(有些渠道需要提交注册时的数据,我们可以使用创建角色这个事件来代替注册事件)
根据判断接入渠道SDK的提交角色参数接口
13、登录接口接入
@Override
publicvoid login(Activity paramActivity, String paramCustom) {
this.loginCustomString = paramCustom;
XXX.login(paramActivity, new DouyuCallback() {
@Override
publicvoid onSuccess(DouyuSdkParams data) {
//渠道返回登录成功的账号信息,需要调用loginCheck接口来进行公共平台服务端进行校验
loginCheck(data);
}
@Override
publicvoid onError(String arg0, String arg1) {
//通知游戏登录失败回调
loginListener.onLoginFailed(PoolSDKCode.$登陆失败$ + arg0 + arg1);
}
});
}
private void loginCheck(DouyuSdkParams data) {
PoolLoginInfo info = createLoginInfo();
info.setToken("" + data.get("sid", ""));
info.setTimestamp(System.currentTimeMillis() + "");
info.setOpenId("");
info.setCustom(this.loginCustomString);
info.setUserName("");
info.setOther(DouyuGameSdk.getSDKVersion());
PoolLoginChecker loginCheck = new PoolLoginChecker(info, this.loginListener);
loginCheck.startCheck();
//下面的为重写loginChecker,部分渠道SDK需要服务端校验的二次信息可以在此获得
// PoolLoginChecker loginChecker = new PoolLoginChecker(info,new
// PoolLoginListener() {
//
// @Override
// public void onLoginSuccess(PoolLoginInfo loginInfo) {
// loginListener.onLoginSuccess(loginInfo);
// }
//
// @Override
// public void onLoginFailed(String msg) {
// loginListener.onLoginFailed(msg);
// }
// });
// loginChecker.startCheck();
}
14、支付接口
@Override
publicvoid pay(final Activity paramActivity, final PoolPayInfo poolPayInfo) {
PoolPayCreateOrder createOrder = new PoolPayCreateOrder(poolPayInfo,
this.sdkUserId, createPayCreateOrderUrl());
createOrder.createOrder(paramActivity, new PoolPayOrderListener() {
@Override
publicvoid onCreateOrderSuccess(PoolPayOrderInfo poolOrderInfo) {
//在此处调用渠道SDK的支付接口,订单号透传参数需要传入 poolOrderInfo.getQueryId()
}
@Override
publicvoid onCreateOrderFailed(String errorMsg) {
if (payListenter != null)
payListenter.onPayFailed(poolPayInfo.getCustom(), errorMsg);
}
});
}
createPayUrl()返回的为后台对应生成的回调地址(有些SDK的支付回调地址是在客户端上传的,这个时候就使用这个方法进行获取支付回调地址然后调用支付接口的时候传进去;有些SDK的支付回调地址是在渠道后台进行设置的,这种情况下就由运营进行配置,我们不需处理)