supersdk

文档中心

文档中心

下载文档

登录模块


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

一、接入前准备

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

二、登录(必接)

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

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

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

接口调用:

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

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

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

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

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

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

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

接口调用:

[SuperSDK invoke:BCORE_MODULE_PLATFORM funcName:BCORE_FUNC_OPEN_LOGIN_PAGE parameters:nil];

2、进入游戏(必接)

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

接口调用:

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

3、创建角色(必接)

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

接口调用:

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

4、角色升级(必接)

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

接口调用:

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

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

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

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

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

接口调用:

[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 打开客服