该模块提供了游戏上渠道必须接入的相关接口,所有接口必须全部接入才能保证在渠道上架,此模块为必接模块。
游戏需要先阅读公共配置,并做好相关配置。
接口描述:用于打开登录面板,供玩家选择登录方式进行账号登录。
注意一:建议在游戏到达登录页面并加载完登录背景图之后再调用此接口,防止登录面板被游戏页面所遮挡。
注意二:游戏不能强依赖登录失败回调,进行游戏逻辑处理。(部分渠道无失败回调)
接口调用:
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_LOGIN, null);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 判断是平台模块("platform")内的方法,并且方法为登录("login")
if(BCoreConst.platform.MODULE_NAME.equals(moduleName) && BCoreConst.platform.FUNC_LOGIN.equals(funcName)) {
// 登录回调,建议调用独立的处理方法
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
// 登录失败
if (BCoreCode.SUCCESS != code) {
// 游戏在这里处理其他登录失败的逻辑
return;
}
JSONObject data = json.getJSONObject("data");
mAccessToken = data.getString("osdk_ticket");
// 登录成功
// 请游戏前端把 mAccessToken 传到游戏后端解析,进行 sign 验证(验证的 secretkey 从打包工具上获取)
// 后端 sign 验证成功,解析 osdk_ticket 里的 osdk_user_id 用作用户唯一账号标识
}
}
};
日志打印:
moduleName:platform
funcName:login
result:
{
"code": 1,
"data": {
"msg": "登录成功",
"osdk_ticket": "eyJvc2RrX2dhbWVfaWQiOiIxOTYzNzc1MzgiLCJ1c2VyX2lkIjoiMTkiLCJsb2dpbl9zZGtfbmFtZSI6IkRlbW8iLCJjaGFubmVsX2lkIjoiMTIzMiIsImV4dGVuZCI6IntcImV4dGVuZFwiOlwiMjE1MHw5NHwwXCIsXCJvdXRlcl9leHRlbmRcIjpcIjIxNTB8OTR8MFwifSIsImFjY291bnRfc3lzdGVtX2lkIjoiMDA2MTAwMCIsIm9zZGtfdXNlcl9pZCI6IjAwNjEwMDBfMTkiLCJpcCI6IjE5Mi4xNjguMTIyLjE0OSIsImNvdW50cnkiOiIwMCIsInRpbWUiOjE0OTg2NjczNjcsInNpZ24iOiIxOWY0MDAxYmEyYWVkMzBjMjk1NjQ5YWU1MDZkMTQyMCJ9",
"status": 1,
"userinfo": {
"login_sdk_name": "Demo",
"user_id": "19"
}
},
"msg": "login success"
}
参数 | 描述 |
---|---|
code | code = 1 登录成功,其他 code 登录失败 |
osdk_ticket | osdk_ticket 用于游戏服务端进行二次验证 |
接口描述:用于供玩家进行账号切换功能。
接口调用:
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_LOGOUT, null);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 判断是平台模块("platform")内的方法,并且方法为注销("logout")
if(BCoreConst.platform.MODULE_NAME.equals(moduleName) && BCoreConst.platform.FUNC_LOGOUT.equals(funcName)) {
// 注销回调,建议调用独立的处理方法
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
if(code == BCoreCode.SUCCESS) {
// 注销成功,游戏重新返回登录页面
} else {
// 注销失败,游戏可以不做处理
}
}
}
};
日志打印:
moduleName:platform
funcName:logout
result:
{
"code":1,
"msg":"logout success"
}
注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:
先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。
先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。
接口描述:当游戏加载成功,到达登录页面时调用此接口进行数据上报。
接口调用:
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_LOGIN_PAGE, null);
接口描述:游戏从登录场景或创角场景进入游戏主场景时,需要调用此接口进行数据上报。
接口调用:
Map<String, String> params = new HashMap<String, String>();
params.put(BCoreConst.platform.KEY_ROLE_ID, "roleId"); // 必传,游戏创建的角色 ID (不能超过 40 个字符)
params.put(BCoreConst.platform.KEY_ROLE_NAME, "roleName"); // 必传,角色名称
params.put(BCoreConst.platform.KEY_ROLE_LEVEL, "roleLevel"); // 必传,角色等级,必须为整形数字
params.put(BCoreConst.platform.KEY_VIP_GRADE, "vip"); // 必传,角色 vip,必须为数字,如 VIP1,则传 1
params.put(BCoreConst.platform.KEY_SERVER_ID, "serverId"); // 必传,服务器 ID
params.put(BCoreConst.platform.KEY_SERVER_NAME, "serverName"); // 必传,服务器名称
params.put(BCoreConst.platform.KEY_OP_SID, "opSid"); // 必传,渠道服务器 ID,开服系统中获取(非 serverId)
params.put(BCoreConst.platform.KEY_ROLE_CREATE_TIME, "roleCreateTime");// 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738
// 调用进入游戏接口,必须在创建角色接口前调用
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_ENTER_GAME, params);
接口描述:创角场景角色创建成功之后,需要调用此接口进行数据上报。
接口调用:
Map<String, String> params = new HashMap<String, String>();
params.put(BCoreConst.platform.KEY_ROLE_ID, "roleId"); // 必传,游戏创建的角色 ID(不能超过 40 个字符)
params.put(BCoreConst.platform.KEY_ROLE_NAME, "roleName"); // 必传,角色名称
params.put(BCoreConst.platform.KEY_ROLE_LEVEL, "roleLevel"); // 必传,角色等级,必须为整形数字
params.put(BCoreConst.platform.KEY_VIP_GRADE, "vip"); // 必传,角色 vip,必须为数字,如 VIP1,则传 1
params.put(BCoreConst.platform.KEY_SERVER_ID, "serverId"); // 必传,服务器 ID
params.put(BCoreConst.platform.KEY_SERVER_NAME, "serverName"); // 必传,服务器名称
params.put(BCoreConst.platform.KEY_OP_SID, "opSid"); // 必传,渠道服务器 ID,开服系统中获取(非 serverId)
params.put(BCoreConst.platform.KEY_ROLE_CREATE_TIME, "roleCreateTime");// 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738
// 调用创建角色接口
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_CREATE_ROLE, params);
接口描述:角色升级时,需要调用此接口进行数据上报。
接口调用:
Map<String, String> params = new HashMap<String, String>();
params.put(BCoreConst.platform.KEY_ROLE_ID, "roleId"); // 必传,游戏创建的角色 ID(不能超过 40 个字符)
params.put(BCoreConst.platform.KEY_ROLE_NAME, "roleName"); // 必传,角色名称
params.put(BCoreConst.platform.KEY_ROLE_LEVEL, "roleLevel"); // 必传,角色等级,必须为整形数字
params.put(BCoreConst.platform.KEY_VIP_GRADE, "vip"); // 必传,角色 vip,必须为数字,如 VIP1,则传 1
params.put(BCoreConst.platform.KEY_SERVER_ID, "serverId"); // 必传,服务器 ID
params.put(BCoreConst.platform.KEY_SERVER_NAME, "serverName"); // 必传,服务器名称
params.put(BCoreConst.platform.KEY_OP_SID, "opSid"); // 必传,渠道服务器 ID,开服系统中获取(非 serverId)
params.put(BCoreConst.platform.KEY_ROLE_CREATE_TIME, "roleCreateTime");// 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738
// 调用角色升级接口
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_LEVEL_UP, params);
接口描述:玩家进入游戏主场景,需要调用此接口进行数据上报。
注意一:如果是新用户第一次进入,一定要放在”创建角色”接口后面调用。
注意二:每次启动游戏只需要在第一次进入主界面调用即可
接口调用:
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_HOME_PAGE, null);
接口描述:渠道扩展接口,调用论坛、用户中心、客服等接口会打开渠道相应的功能界面。
注意:需判断渠道是否有论坛,用户中心,客服接口,有则需要在游戏设置界面提供相应 UI 入口,无则隐藏。
接口调用:
// 是否有论坛
boolean hasForum = SuperSDK.invokeBool(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_HAS_FORUM, null);
if(hasForum) {
// 游戏设置中,显示打开论坛按钮
} else {
// 游戏设置中,隐藏打开论坛按钮
}
// 论坛按钮点击事件,调用该接口,打开论坛
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_FORUM, null);
// 是否有用户中心
boolean hasUserCenter = SuperSDK.invokeBool(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_HAS_USER_CENTER, null);
if(hasUserCenter) {
// 游戏设置中,显示打开用户中心按钮
} else {
// 游戏设置中,隐藏打开用户中心按钮
}
// 用户中心按钮点击事件,调用该接口,打开用户中心
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_USER_CENTER, null);
// 是否有客服
boolean hasCustomServer = SuperSDK.invokeBool(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_HAS_CUSTOMER_SERVICE, null);
if(hasCustomServer) {
// 游戏设置中,显示打开客服按钮
} else {
// 游戏设置中,隐藏打开客服按钮
}
// 客服按钮点击事件,调用该接口,打开客服
HashMap<String, Object> params = new HashMap<>();
params.put("clientVersion", "1.0.0"); // 客户端版本
params.put("serverVersion", "1.0.0"); // 服务端版本
params.put("expand", "{\"serverID\":\"1123450001\",\"serverName\":\"QA测试服\",\"roleID\":\"420123412341234\",\"roleName\":\"QA小管家\",\"clientVersionType\":\"qa_test\",\"serverTime\":\"1617009148\"}"); // 拓展参数 以 json 的格式传入
// 备注:serverID、serverName、roleID、roleName 为必传参数,clientVersionType、serverTime 为选传参数。
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_CUSOMER_SERVICE, params);
接口描述:用于退出游戏时调用此接口。
注意事项:
海外游戏需要自己实现退出确认弹窗。
此接口不接会影响渠道 SDK 资源销毁,导致部分渠道游戏下次无法启动。
请在监听 back 键的 down 方法时调用这个接口,请勿监听 up 以及其他方法。
接口调用:
SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_EXIT, null);
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果。
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
if (BCoreConst.platform.MODULE_NAME.equals(moduleName) && BCoreConst.platform.FUNC_EXIT.equals(funcName)) {
// 退出回调
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
if(code == BCoreCode.SUCCESS) {
// 弹出关闭窗口,并且玩家点击了确认
Log.d("supersdk", "退出确认,游戏需把自己关闭");
} else {
// 弹出关闭窗口,但是玩家取消了,游戏可以不做任何事
String msg = json.getString("msg");
Log.d("supersdk", "退出取消:"+code+", "+msg);
}
} else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
日志打印:
moduleName:platform
funcName:exit
result:
{
"code":1,
"msg":"exit success"
}
常量字符串 | 实际字符串 | 描述 |
---|---|---|
BCoreConst.platform.MODULE_NAME | platform | 平台模块名称 |
BCoreConst.platform.FUNC_LOGIN | login | 登录方法 |
BCoreConst.platform.FUNC_HAS_LOGOUT | hasLogout | 渠道是否有注销接口 |
BCoreConst.platform.FUNC_LOGOUT | logout | 注销接口 |
BCoreConst.platform.FUNC_PAY | pay | 打开支付页面 |
BCoreConst.platform.FUNC_PAY_ORDER_ID | payOrderId | 获取订单号成功回调 |
BCoreConst.platform.KEY_PRICE | price | 充值金额 |
BCoreConst.platform.KEY_PRODUCT_ID | productId | 商品 ID |
BCoreConst.platform.KEY_PRODUCT_NAME | productName | 商品名称 |
BCoreConst.platform.KEY_PRODUCT_DESC | productDesc | 商品描述 |
BCoreConst.platform.KEY_POINT_RATE | pointRate | 现实货币与游戏币兑换比例,如 1:10,则填 10 |
BCoreConst.platform.KEY_POINT_NAME | pointName | 游戏货币名称,如元宝 |
BCoreConst.platform.KEY_ORDER_TITLE | orderTitle | 订单标题 |
BCoreConst.platform.FUNC_ENTER_GAME | enterGame | 进入游戏接口 |
BCoreConst.platform.FUNC_CREATE_ROLE | createRole | 创建角色接口 |
BCoreConst.platform.FUNC_LEVEL_UP | levelUp | 角色升级接口 |
BCoreConst.platform.KEY_ROLE_ID | role_id | 角色 ID |
BCoreConst.platform.KEY_ROLE_NAME | role_name | 角色名称 |
BCoreConst.platform.KEY_ROLE_LEVEL | level | 角色等级 |
BCoreConst.platform.KEY_VIP_GRADE | vip_grade | 角色 vip |
BCoreConst.platform.KEY_SERVER_ID | server_id | 服务器 ID |
BCoreConst.platform.KEY_SERVER_NAME | server_name | 服务器名称 |
BCoreConst.platform.KEY_OP_SID | opSid | 渠道服务器 ID |
BCoreConst.platform.KEY_ROLE_CREATE_TIME | roleCreateTime | 创建角色时间,必须使用服务器时间,单位/s |
BCoreConst.platform.FUNC_HAS_FORUM | hasForum | 是否有论坛 |
BCoreConst.platform.FUNC_OPEN_FORUM | openForum | 打开论坛 |
BCoreConst.platform.FUNC_HAS_USER_CENTER | hasUserCenter | 是否有用户中心 |
BCoreConst.platform.FUNC_OPEN_USER_CENTER | openUserCenter | 打开用户中心 |
BCoreConst.platform.FUNC_HAS_CUSTOMER_SERVICE | hasCustomerService | 是否有客服 |
BCoreConst.platform.FUNC_OPEN_CUSOMER_SERVICE | openCustomerService | 打开客服 |
BCoreConst.platform.FUNC_EXIT | exit | 关闭游戏 |
BCoreConst.platform.FUNC_OPEN_LOGIN_PAGE | openLoginPage | 打开登录页面 |
BCoreConst.platform.FUNC_OPEN_HOME_PAGE | openHomePage | 打开游戏首页 |
BCoreConst.platform.FUNC_REPORT | report | 添加埋点方法名 |
BCoreConst.platform.KEY_EVENT_ID | event_id | 事件 ID |