supersdk

文档中心

文档中心

下载文档

登录模块


该模块提供了游戏上渠道必须接入的相关接口,所有接口必须全部接入才能保证在渠道上架,此模块为必接模块。

一、接入前准备

游戏需要先阅读公共配置,并做好相关配置。

二、登录(必接)

接口描述:用于打开登录面板,供玩家选择登录方式进行账号登录。

注意一:建议在游戏到达登录页面并加载完登录背景图之后再调用此接口,防止登录面板被游戏页面所遮挡。

注意二:游戏不能强依赖登录失败回调,进行游戏逻辑处理。(部分渠道无失败回调)

接口调用:

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"
}

四、埋点数据上报(必接)

注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:

  • 先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。

  • 先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。

1、到达登录页面(必接)

接口描述:当游戏加载成功,到达登录页面时调用此接口进行数据上报。

接口调用:

SuperSDK.invoke(BCoreConst.platform.MODULE_NAME, BCoreConst.platform.FUNC_OPEN_LOGIN_PAGE, null);

2、进入游戏(必接)

接口描述:游戏从登录场景或创角场景进入游戏主场景时,需要调用此接口进行数据上报。

接口调用:

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);

3、创建角色(必接)

接口描述:创角场景角色创建成功之后,需要调用此接口进行数据上报。

接口调用:

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);

4、角色升级(必接)

接口描述:角色升级时,需要调用此接口进行数据上报。

接口调用:

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);

5、到达游戏主页面(必接)

接口描述:玩家进入游戏主场景,需要调用此接口进行数据上报。

注意一:如果是新用户第一次进入,一定要放在”创建角色”接口后面调用。

注意二:每次启动游戏只需要在第一次进入主界面调用即可

接口调用:

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