该模块提供了游戏上渠道必须接入的相关接口,所有接口必须全部接入才能保证在渠道上架,此模块为必接模块。
游戏需要先阅读公共配置,并做好相关配置。
接口描述:用于打开登录面板,供玩家选择登录方式进行账号登录。
注意一:建议在游戏到达登录页面并加载完登录背景图之后再调用此接口,防止登录面板被游戏页面所遮挡。
注意二:游戏不能强依赖登录失败回调,进行游戏逻辑处理。(部分渠道无失败回调)
接口调用:
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_LOGIN parameters:nil];
接口回调:
- (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName result:(NSString *)result {
// 处理 SuperSDK 回调逻辑,注意,所有模块回调都在这里。
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n result : %@", moduleName, funcName, result);
// 1.回调参数解析
NSDictionary *retParam = nil;
if (result) {
NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue]; // 状态码
NSString *msg = [retParam objectForKey:@"msg"]; // 说明
// 2.回调参数判断
if ([moduleName isEqualToString:BCORE_MODULE_PLATFORM]) {// 平台模块回调
if ([funcName isEqualToString:BCORE_FUNC_LOGIN]) {// 登录回调
if (code == BCORE_SUCCESS) {
// 平台登陆成功,需要将 osdk_ticket 拿到游戏服务器去验证一下,以确定用户信息的合法性
NSDictionary *data = [retParam objectForKey:@"data"]; // 回调 data 数据
NSString *ticket = [data objectForKey:@"osdk_ticket"];//拿到 ticket 去游戏服务器做登陆验证
}
else {
NSLog(@"平台登陆失败,code = %d ,原因是 %@",code, msg);
}
}
}
}
日志打印:
moduleName : platform
funcName : login
result :
{
"msg" : "登录成功",
"data" : {
"status" : 1,
"msg" : "登录成功",
"osdk_ticket" : "eyJvc2RrX2dhbWVfaWQiOiIxOTYzNzc0MjYiLCJ1c2VyX2lkIjoiMjI3IiwibG9naW5fc2RrX25hbWUiOiJEZW1vIiwiY2hhbm5lbF9pZCI6IjAiLCJleHRlbmQiOiIyMTUwfDEyM3wwIiwiYWNjb3VudF9zeXN0ZW1faWQiOiIwMDYwMDAwIiwib3Nka191c2VyX2lkIjoiMDA2MDAwMF8yMjciLCJpcCI6IjYxLjE3NC4xNS4yMjkiLCJjb3VudHJ5IjoiQ04iLCJ0aW1lIjoxNDk5MTUyMTgyLCJzaWduIjoiZGFjYzZkZjI4ODVkZTRmNzg2N2U5OGI0ZGFjY2U3YjUifQ==",
"userinfo" : {
"user_id" : "227",
"login_sdk_name" : "Demo"
}
},
"code" : 1
}
参数 | 描述 |
---|---|
code | code = 1 登录成功,其他 code 登录失败 |
osdk_ticket | osdk_ticket 用于游戏服务端进行二次验证 |
接口描述:用于供玩家进行账号切换功能。
接口调用:
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_LOGOUT parameters:nil];
接口回调:
- (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName result:(NSString *)result {
// 处理 SuperSDK 回调逻辑,注意,所有模块回调都在这里。
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n result : %@", moduleName, funcName, result);
// 1.回调参数解析
NSDictionary *retParam = nil;
if (result) {
NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue]; // 状态码
NSString *msg = [retParam objectForKey:@"msg"]; // 说明
// 2.回调参数判断
if ([moduleName isEqualToString:BCORE_MODULE_PLATFORM]) {// 平台模块回调
if ([funcName isEqualToString:BCORE_FUNC_LOGOUT]) {// 注销回调
if (code == BCORE_SUCCESS) {
NSLog(@"********注销成功*********");
}
else {
NSLog(@"********注销失败*********");
}
}
}
}
日志打印:
moduleName : platform
funcName : logout
result :
{
"msg" : "注销成功",
"code" : 1
}
注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:
先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。
先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。
接口描述:当游戏加载成功,到达登录页面时调用此接口进行数据上报。
接口调用:
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_LOGIN_PAGE parameters:nil];
接口描述:游戏从登录场景或创角场景进入游戏主场景时,需要调用此接口进行数据上报。
接口调用:
NSString *serverId = @"100000001"; // 服务器 id
NSString *serverName = @"测试服"; // 服务器名称
NSString *roleId = @"g1029388822"; // 角色 id(不能超过 40 个字符)
NSString *roleName = @"墨韵"; // 角色名字
NSString *level = @"125"; // 角色等级
NSString *vipGrade = @"15"; // VIP 等级
NSString *opSid = @"12345"; // 运营商服务器 id,默认和服务器 id 相同
NSString *roleCreateTime = @"1501569251";// 创角时间,10 位时间戳,精确到秒
NSDictionary *gameInfo = @{
@"server_id" : serverId,
@"server_name" : serverName,
@"role_id" : roleId,
@"role_name" : roleName,
@"level" : level,
@"vip_grade" : vipGrade,
@"opSid" : opSid,
@"roleCreateTime" : roleCreateTime
};
// 调用进入游戏接口
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_ENTER_GAME parameters:gameInfo];
接口描述:创角场景角色创建成功之后,需要调用此接口进行数据上报。
接口调用:
NSString *serverId = @"100000001"; // 服务器 id
NSString *serverName = @"测试服"; // 服务器名称
NSString *roleId = @"g1029388822"; // 角色 id(不能超过 40 个字符)
NSString *roleName = @"墨韵"; // 角色名字
NSString *level = @"1"; // 角色等级
NSString *vipGrade = @"0"; // VIP 等级
NSString *opSid = @"12345"; // 运营商服务器 id,默认和服务器 id 相同
NSString *roleCreateTime = @"1501569251";// 创角时间,10 位时间戳,精确到秒
NSDictionary *gameInfo = @{
@"server_id" : serverId,
@"server_name" : serverName,
@"role_id" : roleId,
@"role_name" : roleName,
@"level" : level,
@"vip_grade" : vipGrade,
@"opSid" : opSid,
@"roleCreateTime" : roleCreateTime
};
// 调用创建角色接口
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_CREATE_ROLE parameters:gameInfo];
接口描述:角色升级时,需要调用此接口进行数据上报。
接口调用:
NSString *serverId = @"100000001"; // 服务器 id
NSString *serverName = @"测试服"; // 服务器名称
NSString *roleId = @"g1029388822"; // 角色 id(不能超过 40 个字符)
NSString *roleName = @"墨韵"; // 角色名字
NSString *level = @"100"; // 角色等级
NSString *vipGrade = @"10"; // VIP 等级
NSString *opSid = @"12345"; // 运营商服务器 id,默认和服务器 id 相同
NSString *roleCreateTime = @"1501569251";// 创角时间,10 位时间戳,精确到秒
NSDictionary *gameInfo = @{
@"server_id" : serverId,
@"server_name" : serverName,
@"role_id" : roleId,
@"role_name" : roleName,
@"level" : level,
@"vip_grade" : vipGrade,
@"opSid" : opSid,
@"roleCreateTime" : roleCreateTime
};
// 调用角色升级接口
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_LEVEL_UP parameters:gameInfo];
接口描述:玩家进入游戏主场景,需要调用此接口进行数据上报。
注意一:如果是新用户第一次进入,一定要放在”创建角色”接口后面调用。
注意二:每次启动游戏只需要在第一次进入主界面调用即可。
接口调用:
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_HOME_PAGE parameters:nil];
接口描述:渠道扩展接口,调用论坛、用户中心、客服等接口会打开渠道相应的功能界面。
注意:需判断渠道是否有论坛,用户中心,客服接口,有则需要在游戏设置界面提供相应 UI 入口,无则隐藏。
接口调用:
// 论坛
if ([SuperSDK invokeBool:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_HAS_FORUM parameters:nil]) {
// 游戏设置中,显示打开论坛按钮
}
else {
// 游戏设置中,隐藏打开论坛按钮
}
// 论坛按钮点击事件,调用该接口,打开论坛
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_FORUM parameters:nil];
// 用户中心
if ([SuperSDK invokeBool:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_HAS_USER_CENTER parameters:nil]) {
// 游戏设置中,显示打开用户中心按钮
}
else {
// 游戏设置中,隐藏打开用户中心按钮
}
// 用户中心按钮点击事件,调用该接口,打开用户中心
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_USER_CENTER parameters:nil];
// 客服
if ([SuperSDK invokeBool:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_HAS_CUSOMER_SERVICE parameters:nil]) {
// 游戏设置中,显示打开客服按钮
}
else {
// 游戏设置中,隐藏打开客服按钮
}
// 客服按钮点击事件,调用该接口,打开客服
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_CUSOMER_SERVICE parameters:@{
@"clientVersion" : @"1.0.0", // 客户端版本
@"serverVersion" : @"1.0.0", // 服务端版本
@"expand" : @"{\"serverID\":\"1123450001\",\"serverName\":\"QA测试服\",\"roleID\":\"420123412341234\",\"roleName\":\"QA小管家\",\"clientVersionType\":\"qa_test\",\"serverTime\":\"1617009148\"}" // 扩展参数,json 格式
}];
// 备注:serverID、serverName、roleID、roleName 为必传参数,clientVersionType、serverTime 为选传参数。
接口描述:账号删除接口。
注意:游戏包上架 App Store 必须调用此接口(游戏内一般在设置中提供调用入口)。
接口调用:
[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:@"openLogoutAccountCenter" parameters:nil];
常量字符串 | 实际字符串 | 描述 |
---|---|---|
BCORE_MODULE_PLATFORM | platform | 平台模块 |
BCORE_FUNC_LOGIN | login | 登录方法 |
BCORE_FUNC_HAS_LOGOUT | hasLogout | 渠道是否有注销接口 |
BCORE_FUNC_LOGOUT | logout | 注销接口 |
BCORE_FUNC_ENTER_GAME | enterGame | 进入游戏接口 |
BCORE_FUNC_CREATE_ROLE | createRole | 创建角色接口 |
BCORE_FUNC_LEVEL_UP | levelUp | 角色升级接口 |
BCORE_KEY_ROLE_ID | role_id | 角色 ID |
BCORE_KEY_ROLE_NAME | role_name | 角色名称 |
BCORE_KEY_ROLE_LEVEL | level | 角色等级 |
BCORE_KEY_VIP_GRADE | vip_grade | 角色 vip |
BCORE_KEY_SERVER_ID | server_id | 服务器 ID |
BCORE_KEY_SERVER_NAME | server_name | 服务器名称 |
BCORE_KEY_OPSID | opSid | 渠道服务器 ID |
BCORE_KEY_ROLE_CREATE_TIME | roleCreateTime | 创建角色时间,必须使用服务器时间,单位秒 |
BCORE_FUNC_HAS_FORUM | hasForum | 是否有论坛 |
BCORE_FUNC_OPEN_FORUM | openForum | 打开论坛 |
BCORE_FUNC_HAS_USER_CENTER | hasUserCenter | 是否有用户中心 |
BCORE_FUNC_OPEN_USER_CENTER | openUserCenter | 打开用户中心 |
BCORE_FUNC_HAS_CUSOMER_SERVICE | hasCustomerService | 是否有客服 |
BCORE_FUNC_OPEN_CUSOMER_SERVICE | openCustomerService | 打开客服 |