该模块提供了游戏上渠道必须接入的相关接口,所有接口必须全部接入才能保证在渠道上架,此模块为必接模块。
游戏需要先阅读公共配置,并做好相关配置。
接口描述:用于打开登录面板,供玩家选择登录方式进行账号登录。
注意一:建议在游戏到达登录页面并加载完登录背景图之后再调用此接口,防止登录面板被游戏页面所遮挡。
注意二:游戏不能强依赖登录失败回调,进行游戏逻辑处理。(部分渠道无失败回调)
接口调用:
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);
注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:
先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。
先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。
接口描述:当游戏加载成功,到达登录页面时调用此接口进行数据上报。
接口调用:
SuperSDK.getInstance().Invoke(SuperSDKPlatform.MODULE_NAME, SuperSDKPlatform.FUNC_OPEN_LOGIN_PAGE, null);
接口描述:游戏从登录场景或创角场景进入游戏主场景时,需要调用此接口进行数据上报。
接口调用:
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);
接口描述:创角场景角色创建成功之后,需要调用此接口进行数据上报。
接口调用:
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);
接口描述:角色升级时,需要调用此接口进行数据上报。
接口调用:
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);
接口描述:玩家进入游戏主场景,需要调用此接口进行数据上报。
注意一:如果是新用户第一次进入,一定要放在”创建角色”接口后面调用。
注意二:每次启动游戏只需要在第一次进入主界面调用即可。
接口调用:
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 |