supersdk

文档中心

文档中心

下载文档

登录模块


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

一、接入前准备

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

二、登录(必接)

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

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

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

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_LOGIN, null);

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

    JsonData resultData = JsonMapper.ToObject(result);
    // 平台模块回调
    if (moduleName.Equals(SuperSDKPlatform.MODULE_NAME))
    {
        if (funcName.Equals(SuperSDKPlatform.FUNC_LOGIN))
        {
            // 处理登录回调
            JsonData resultData = JsonMapper.ToObject(result);
            int code = (int)resultData["code"];
            string msg = JsonMapper.ToJson(resultData["data"]);
            if (code == SuperSDKConstants.SUCCESS)
            {
                // SDK登录成功

                // 解析msg保存loginData和user_id
                JsonData mData = JsonMapper.ToObject(msg);

                // 保存Ticket,需要发送游戏服务端进行验证
                string ticket = mData["osdk_ticket"].ToString();

                // ticket解密后,解析获取用户id
                string ticketJson = StringUtil.Base64ToCommonString(mData["osdk_ticket"].ToString());
                string userId = JsonMapper.ToObject(ticketJson)["osdk_user_id"].ToString();
            }
            else
            {
                // SDK登录失败
                // 注意:游戏不能依赖此接口处理逻辑
            }
        }
    }
}

日志打印:

moduleName:platform
funcName:login
result:
{
    "code": 1,
    "data": {
        "msg": "登录成功",
        "osdk_ticket": "eyJvc2RrX2dhbWVfaWQiOiIxOTYzNzc1MzgiLCJ1c2VyX2lkIjoiMjI3IiwibG9naW5fc2RrX25hbWUiOiJEZW1vIiwiY2hhbm5lbF9pZCI6IjAiLCJleHRlbmQiOiJ7XCJleHRlbmRcIjpcIjIxNTB8OTR8MFwiLFwib3V0ZXJfZXh0ZW5kXCI6XCIyMTUwfDk0fDBcIn0iLCJhY2NvdW50X3N5c3RlbV9pZCI6IjAwNjEwMDAiLCJvc2RrX3VzZXJfaWQiOiIwMDYxMDAwXzIyNyIsImlwIjoiMTkyLjE2OC4xMjMuMTU3IiwiY291bnRyeSI6IjAwIiwidGltZSI6MTQ5ODY1NzE0Nywic2lnbiI6IjM1MGRlYzRkZWQxM2Q2NmM1NGY3MjczZmMwODU2Y2I4In0=",
        "status": 1,
        "userinfo": {
            "login_sdk_name": "Demo",
            "user_id": "227"
        }
    },
    "msg": "login success"
}

三、注销(必接)

接口描述:用于供玩家进行账号切换功能。

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_LOGOUT, null);

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

    JsonData resultData = JsonMapper.ToObject(result);
    // 平台模块回调
    if (moduleName.Equals(SuperSDKPlatform.MODULE_NAME))
    {
        if (funcName.Equals(SuperSDKPlatform.FUNC_LOGOUT))
        {
            // 处理注销结果
            JsonData resultData = JsonMapper.ToObject(result);
            if ((int)resultData["code"] == SuperSDKConstants.SUCCESS)
            {
                // 注销成功
                // 切回到登录场景,重置角色信息
            }
        }
    }
}

日志打印:

moduleName : platform
funcName : logout
result : 
{
    "msg" : "注销成功",
    "code" : 1
}

注意:如果游戏有特殊需求,可以判断该接口,再决定是否调用注销接口(选接)。

// 判断第三方渠道是否有注销接口
bool hasLogout = SuperSDK.getInstance().InvokeBool(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_HAS_LOGOUT, null);

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

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

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

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

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

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

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_LOGIN_PAGE, null);

2、进入游戏(必接)

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

接口调用:

Dictionary<string, object> roleDic = new Dictionary<string, object>();
roleDic.Add(SuperSDKPlatform.KEY_ROLE_ID, "roleId"); // 游戏创建的角色 ID (不能超过 40 个字符)
roleDic.Add(SuperSDKPlatform.KEY_ROLE_NAME, "roleName"); // 角色名称
roleDic.Add(SuperSDKPlatform.KEY_ROLE_LEVEL, "roleLevel"); // 角色等级
roleDic.Add(SuperSDKPlatform.KEY_VIP_GRADE, "vip"); // 角色 vip
roleDic.Add(SuperSDKPlatform.KEY_SERVER_ID, "serverId"); // 服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_SERVER_NAME, "serverName"); // 服务器名称
roleDic.Add(SuperSDKPlatform.KEY_OP_SID, "opSid"); // 渠道服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_ROLE_CREATE_TIME, "roleCreateTime"); // 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738

// 调用进入游戏接口
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME,SuperSDKPlatform.FUNC_ENTER_GAME,roleDic);

3、创建角色(必接)

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

接口调用:

Dictionary<string, object> roleDic = new Dictionary<string, object>();
roleDic.Add(SuperSDKPlatform.KEY_ROLE_ID, "roleId"); // 游戏创建的角色 ID (不能超过 40 个字符)
roleDic.Add(SuperSDKPlatform.KEY_ROLE_NAME, "roleName"); // 角色名称
roleDic.Add(SuperSDKPlatform.KEY_ROLE_LEVEL, "roleLevel"); // 角色等级
roleDic.Add(SuperSDKPlatform.KEY_VIP_GRADE, "vip"); // 角色 vip
roleDic.Add(SuperSDKPlatform.KEY_SERVER_ID, "serverId"); // 服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_SERVER_NAME, "serverName"); // 服务器名称
roleDic.Add(SuperSDKPlatform.KEY_OP_SID, "opSid"); // 渠道服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_ROLE_CREATE_TIME, "roleCreateTime"); // 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738

// 调用创建角色接口
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME,SuperSDKPlatform.FUNC_CREATE_ROLE,roleDic);

4、角色升级(必接)

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

接口调用:

Dictionary<string, object> roleDic = new Dictionary<string, object>();
roleDic.Add(SuperSDKPlatform.KEY_ROLE_ID, "roleId"); // 游戏创建的角色 ID (不能超过 40 个字符)
roleDic.Add(SuperSDKPlatform.KEY_ROLE_NAME, "roleName"); // 角色名称
roleDic.Add(SuperSDKPlatform.KEY_ROLE_LEVEL, "roleLevel"); // 角色等级
roleDic.Add(SuperSDKPlatform.KEY_VIP_GRADE, "vip"); // 角色 vip
roleDic.Add(SuperSDKPlatform.KEY_SERVER_ID, "serverId"); // 服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_SERVER_NAME, "serverName"); // 服务器名称
roleDic.Add(SuperSDKPlatform.KEY_OP_SID, "opSid"); // 渠道服务器 ID
roleDic.Add(SuperSDKPlatform.KEY_ROLE_CREATE_TIME, "roleCreateTime"); // 必传,创角时间,必须为服务器时间,必须为 10 位数字,如 1498043738

// 调用角色升级接口
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME,SuperSDKPlatform.FUNC_LEVEL_UP,roleDic);

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

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

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

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

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_HOME_PAGE, null);

五、论坛、用户中心、客服(选接)

接口描述:渠道扩展接口,调用论坛、用户中心、客服等接口会打开渠道相应的功能界面。

注意:需判断渠道是否有论坛,用户中心,客服接口,有则需要在游戏设置界面提供相应 UI 入口,无则隐藏。

接口调用:

// 是否有论坛
bool hasForum = SuperSDK.getInstance().InvokeBool(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_HAS_FORUM, null);
if(hasForum) {
    // 游戏设置中,显示打开论坛按钮
} else {
    // 游戏设置中,隐藏打开论坛按钮
}

// 论坛按钮点击事件,调用该接口,打开论坛
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_FORUM, null);
// 是否有用户中心
bool hasUserCenter = SuperSDK.getInstance().InvokeBool(SuperSDKPlatform.MODULE_NAME,SuperSDKPlatform.FUNC_HAS_USER_CENTER,null);
if(hasUserCenter) {
    // 游戏设置中,显示打开用户中心按钮
} else {
    // 游戏设置中,隐藏打开用户中心按钮
}

// 用户中心按钮点击事件,调用该接口,打开用户中心
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_USER_CENTER, null);
// 是否有客服
bool hasCustomServer = SuperSDK.getInstance().InvokeBool(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_HAS_CUSOMER_SERVICE, null);
if(hasCustomServer) {
    // 游戏设置中,显示打开客服按钮
} else {
    // 游戏设置中,隐藏打开客服按钮
}

// 客服按钮点击事件,调用该接口,打开客服
Dictionary<string, object> params = new Dictionary<string, object>();
params.Add("clientVersion", "1.0.0"); // 客户端版本
params.Add("serverVersion", "1.0.0"); // 服务端版本
params.Add("expand", "{\"serverID\":\"1123450001\",\"serverName\":\"QA测试服\",\"roleID\":\"420123412341234\",\"roleName\":\"QA小管家\",\"clientVersionType\":\"qa_test\",\"serverTime\":\"1617009148\"}"); // 拓展参数 以 json 的格式传入

// 备注:serverID、serverName、roleID、roleName 为必传参数,clientVersionType、serverTime 为选传参数。

// 如果有客服,打开客服
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_CUSOMER_SERVICE, params);

六、退出游戏(必接)

接口描述:用于退出游戏时调用此接口。

注意一:仅支持 Android。

注意二:

  • 海外游戏需要自己实现退出确认弹窗。

  • 此接口不接会影响渠道 SDK 资源销毁,导致部分渠道游戏下次无法启动。

  • 请在监听 back 键的 down 方法时调用这个接口,请勿监听 up 以及其他方法。

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_EXIT, null);

接口回调:

public void OnCallBack(string moduleName, string funcName, string result)
{
    Debug.Log("moduleName:" + moduleName);
    Debug.Log("funcName:" + funcName);
    Debug.Log("result:" + result);

    JsonData resultData = JsonMapper.ToObject(result);
    // 平台模块回调
    if (moduleName.Equals(SuperSDKPlatform.MODULE_NAME))
    {
        if (funcName.Equals(SuperSDKPlatform.FUNC_EXIT))
        {
            // 处理退出结果
            JsonData resultData = JsonMapper.ToObject(result);
            int code = json.getIntValue("code");
            if ((int)resultData["code"] == SuperSDKConstants.HAS_EXIT_PAGE_AND_PRESS_EXIT)
            {
                // 退出游戏
                Application.Quit();
            }
        }
    }
}

日志打印:

moduleName:platform
funcName:exit
result:{"code":1,"msg":"exit success"}

七、账号删除(必接)

接口描述:账号删除接口。

注意一:仅支持 iOS。

注意二:游戏包上架 App Store 必须调用此接口(游戏内一般在设置中提供调用入口)。

接口调用:

SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, "openLogoutAccountCenter", null);

附录

常量字符串 实际字符串 描述
SuperSDKPlatform.MODULE_NAME platform 平台模块
登录
SuperSDKPlatform.FUNC_LOGIN login 登录方法
注销
SuperSDKPlatform.FUNC_HAS_LOGOUT hasLogout 渠道是否有注销接口
SuperSDKPlatform.FUNC_LOGOUT logout 注销方法
角色数据上报
SuperSDKPlatform.FUNC_ENTER_GAME enterGame 进入游戏方法
SuperSDKPlatform.FUNC_CREATE_ROLE createRole 创建角色方法
SuperSDKPlatform.FUNC_LEVEL_UP levelUp 角色升级方法
SuperSDKPlatform.KEY_ROLE_ID role_id 角色ID
SuperSDKPlatform.KEY_ROLE_NAME role_name 角色名称
SuperSDKPlatform.KEY_ROLE_LEVEL level 角色等级
SuperSDKPlatform.KEY_VIP_GRADE vip_grade 角色 vip
SuperSDKPlatform.KEY_SERVER_ID server_id 服务器 ID
SuperSDKPlatform.KEY_SERVER_NAME server_name 服务器名称
SuperSDKPlatform.KEY_OP_SID opSid 渠道服务器 ID
SuperSDKPlatform.KEY_ROLE_CREATE_TIME roleCreateTime 创建角色时间,必须使用服务器时间,单位/s
论坛、用户中心、客服
SuperSDKPlatform.FUNC_HAS_FORUM hasForum 渠道是否有论坛功能方法
SuperSDKPlatform.FUNC_OPEN_FORUM openForum 打开渠道论坛方法
SuperSDKPlatform.FUNC_HAS_USER_CENTER hasUserCenter 渠道是否有个人中心方法
SuperSDKPlatform.FUNC_OPEN_USER_CENTER openUserCenter 打开渠道个人中心方法
SuperSDKPlatform.FUNC_HAS_CUSOMER_SERVICE hasCustomerService 渠道是否有客服方法
SuperSDKPlatform.FUNC_OPEN_CUSOMER_SERVICE openCustomerService 打开渠道客服方法
关闭游戏
SuperSDKPlatform.FUNC_EXIT exit 关闭游戏
打开登录页面、打开游戏主城页面
SuperSDKPlatform.FUNC_OPEN_LOGIN_PAGE openLoginPage 打开登录页面
SuperSDKPlatform.FUNC_OPEN_HOME_PAGE openHomePage 打开游戏首页
添加SuperSDK埋点
SuperSDKPlatform.FUNC_REPORT report 添加埋点方法名
SuperSDKPlatform.KEY_EVENT_ID event_id 事件 ID