supersdk

文档中心

文档中心

下载文档

区服模块


区服模块提供获取服务器列表,角色列表相关功能。

一、注意事项

注意一:区服模块需申请参数,并在打包工具配置。接入完成后需确认是否接入成功。

注意二:区服模块获取的信息只做显示玩家历史角色、服务器、等级信息。

注意三:区服模块提供的信息不可作为游戏活动的依据。

注意四:游戏需要对外网预告服做进入游戏的限制。

二、功能接口

1. 获取区服列表

接口描述:获取区服列表。

接口调用:

 [SuperSDK invoke:@"xsdk"
         funcName:@"queryServers"
       parameters:@{
                       @"yz_game_id":@"94",             // 游戏开服系统中的游戏编号
                       @"opid"      :@"2107",           // 渠道编号
                       @"opgameid"  :@"2021",           // 混服编号
                       @"packageId" :@"28",             // 包 ID
                       @"pageSize"  :@"10",             // 区服分页,每页数据条数,值必须大于等于 1。非必须参数
                       @"pageNo"    :@"1",              // 区服分页,第多少页,值必须大于等于 1。非必传参数
                       @"backColums":@"[\"op_sid\"]"    // 可选返回列、详情查看本接口下方的备注
                   }];

接口回调:

 - (void)handlerCallback:(NSString *)moduleName
               funcName:(NSString *)funcName
             parameters:(NSString *)parameters {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
    
    NSDictionary *retParam = nil;
    if (parameters) {
        NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    
    int code = [[retParam objectForKey:@"code"] intValue];
    NSString *desc = [retParam objectForKey:@"msg"];
    id data  = [retParam objectForKey:@"data"];
    
    if ([moduleName isEqualToString:BCORE_MODULE_XSDK]) {// 角色模块回调
        
        if ([funcName isEqualToString:BCORE_FUNC_QUERY_SERVER]) {// 区服查询回调
            NSLog(@"区服查询回调");
            if(code == BCORE_SUCCESS) {
                NSDictionary *serverInfos = data;
                NSLog(@"区服列表信息为:%@", serverInfos);
            }
            else {
                NSLog(@"查询区服列表失败,%@", desc);
            }
        }
    }
 }

日志打印:

收到回调
 moduleName : xsdk,
 funcName : queryServers,
 result : {
  "msg" : "查询区服列表成功",
  "data" : {
    "totalCount" : 2,
    "list" : [
          {
            "op_sid" : "1516440002",
            "type" : "44",
            "server_name" : "测试服2",
            "is_recommend" : "1",
            "first_opentime" : "1537372800",
            "server_id" : "1516440002",
            "new_style" : "3",
            "is_active" : "1",
            "server_url" : "s1516440002-sbzh.youzu.com"
          },
          {
            "op_sid" : "1516440001",
            "type" : "44",
            "server_name" : "测试服1",
            "is_recommend" : "1",
            "first_opentime" : "1537372800",
            "server_id" : "1516440001",
            "new_style" : "3",
            "is_active" : "1",
            "server_url" : "s1516440001-sbzh.youzu.com"
          }]
      },
  "code" : 1
 }

2. 获取推荐区服列表(选接)

接口描述:获取推荐服列表。

接口调用:

 [SuperSDK invoke:@"xsdk"
         funcName:@"queryRecoServers"
       parameters:@{
                       @"yz_game_id":@"94",                 // 游戏开服系统中的游戏编号
                       @"opid"      :@"2107",               // 渠道编号
                       @"opgameid"  :@"2021",               // 混服编号
                       @"packageId" :@"28",                 // 包 ID
                       @"pageSize"  :@"10",                 // 区服分页,每页数据条数,值必须大于等于 1。非必须参数
                       @"pageNo"    :@"1",                  // 区服分页,第多少页,值必须大于等于 1。非必传参数
                       @"backColums":@"[\"cover_style\"]    // 可选返回列,详情查看本接口下方的附录,此接口 cover_style 必传字段
                       @"isCache"   :@"1"                   //是否使用缓存数据,1:使用,0:不使用,非必传参数,默认使用缓存
                   }];

接口回调:

 - (void)handlerCallback:(NSString *)moduleName
               funcName:(NSString *)funcName
             parameters:(NSString *)parameters {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
    
    NSDictionary *retParam = nil;
    if (parameters) {
        NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    
    int code = [[retParam objectForKey:@"code"] intValue];
    NSString *desc = [retParam objectForKey:@"msg"];
    id data  = [retParam objectForKey:@"data"];
    
    if ([moduleName isEqualToString:BCORE_MODULE_XSDK]) {// 角色模块回调
        
        if ([funcName isEqualToString:@"queryRecoServers"]) {// 区服查询回调
            NSLog(@"区服查询回调");
            if(code == BCORE_SUCCESS) {
                NSDictionary *serverInfos = data;
                NSLog(@"区服列表信息为:%@", serverInfos);
            }
            else {
                NSLog(@"查询区服列表失败,%@", desc);
            }
        }
    }
 }

日志打印:

收到回调
 moduleName : xsdk,
 funcName : queryRecoServers,
 result : {
  "msg" : "查询推荐区服列表成功",
  "data" : {
    "totalCount" : 2,
    "list" : [
          {
            "op_sid" : "1516440002",
            "type" : "44",
            "server_name" : "测试服2",
            "is_recommend" : "1",
            "first_opentime" : "1537372800",
            "server_id" : "1516440002",
            "new_style" : "3",
            "is_active" : "1",
            "server_url" : "s1516440002-sbzh.youzu.com",
            "cover_style":"1"
          },
          {
            "op_sid" : "1516440001",
            "type" : "44",
            "server_name" : "测试服1",
            "is_recommend" : "1",
            "first_opentime" : "1537372800",
            "server_id" : "1516440001",
            "new_style" : "3",
            "is_active" : "1",
            "server_url" : "s1516440001-sbzh.youzu.com",
            "cover_style":"1"
          }]
      },
  "code" : 1
 }

3. 获取最近登录角色信息(选接)

接口描述:获取最近登录角色信息。

接口调用:

 [SuperSDK invoke:@"xsdk"
         funcName:@"queryLastRole"
       parameters:@{
                       @"osdk_user_id":@"0060015_123",  // SuperSDK 登录回调的 osdk_user_id
                       @"yz_game_id"  :@"94",           // 游戏开服系统中的游戏编号
                       @"opid"        :@"2150",         // 区服编号
                       @"opgameid"    :@"2055",         // 混服编号
                       @"packageId"   :@"28",           // 包 ID
                       @"backColums"  :@"[\"op_sid\"]"  // 可选返回列、详情查看本获取区服列表下方的备注
                   }];

接口回调:

 - (void)handlerCallback:(NSString *)moduleName
                funcName:(NSString *)funcName
              parameters:(NSString *)parameters {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
    
    NSDictionary *retParam = nil;
    if (parameters) {
        NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    
    int code = [[retParam objectForKey:@"code"] intValue];
    NSString *desc = [retParam objectForKey:@"msg"];
    id data  = [retParam objectForKey:@"data"];
    
    if ([moduleName isEqualToString:BCORE_MODULE_XSDK]) {// 角色模块回调
        
        if ([funcName isEqualToString:@"queryLastRole"]) {// 查询当前账号上次登录的角色信息
            NSLog(@"角色查询回调");
            if(code == BCORE_SUCCESS) {
                NSDictionary *roleInfo = data;
                NSLog(@"上次登录的角色信息是:%@", roleInfo);
            }
            else {
                NSLog(@"拉取数据失败,原因%@", desc);
            }
        }
    }
 }

日志打印:

 moduleName : xsdk,
 funcName : queryLastRole,
 parameters : {
    code = 1;
    data = {
        level = 1;
        opid = 2107;
        "osdk_user_id" = "0060015_123";
        roleCreateTime = 1519959398;
        "role_id" = AUfegpIF;
        "role_name" = "\U54e5\U6765\U4e86";
        serverInfo =         {
            "first_opentime" = 1546185600;
            "is_active" = 1;
            "new_style" = 4;
            "server_id" = 2021311322;
            "server_name" = "\U63a8\U8bda\U76f8\U4fe1(S1322)";
            type = 31;
        };
        "server_id" = 2021311322;
        "vip_grade" = 0;
        "yz_game_id" = 94;
    };
    msg = "\U67e5\U8be2\U5f53\U524d\U8d26\U53f7\U6700\U8fd1\U767b\U5f55\U7684\U89d2\U8272\U4fe1\U606f\U6210\U529f";
}

4. 获取角色列表

接口描述:获取角色列表。

接口调用:

 [SuperSDK invoke:@"xsdk"
         funcName:@"queryRoles"
       parameters:@{
                       @"osdk_user_id":@"0060015_123",   // SuperSDK 登录回调的 osdk_user_id
                       @"yz_game_id"  :@"94",            // 游戏开服系统中的游戏编号
                       @"opid"        :@"2150",          // 区服编号
                       @"opgameid"    :@"2055",          // 混服编号
                       @"packageId"   :@"28",            // 包 ID
                       @"backColums"  :@"[\"op_sid\"]"   // 可选返回列、详情查看本获取区服列表下方的备注
                  }];

接口回调:

 - (void)handlerCallback:(NSString *)moduleName
                funcName:(NSString *)funcName
              parameters:(NSString *)parameters {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
    
    NSDictionary *retParam = nil;
    if (parameters) {
        NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    
    int code = [[retParam objectForKey:@"code"] intValue];
    NSString *desc = [retParam objectForKey:@"msg"];
    id data  = [retParam objectForKey:@"data"];
    
    if ([moduleName isEqualToString:BCORE_MODULE_XSDK]) {// 角色模块回调
        
        if ([funcName isEqualToString:BCORE_FUNC_QUERY_ROLES]) {// 角色查询回调
            NSLog(@"角色查询回调");
            if(code == BCORE_SUCCESS) {
                NSArray *roleList = [retParam objectForKey:@"data"];
                NSLog(@"查询的角色信息为:%@", roleList);
            }
            else {
                NSLog(@"拉取数据失败,原因%@", desc);
            }
        }
    }
 }

日志打印:

 moduleName : xsdk,
 funcName : queryRoles,
 parameters : {
    code = 1;
    data = (
            {
            extend = "extend";
            level = 1;
            opid = 2107;
            "osdk_user_id" = "0060015_123";
            roleCreateTime = 1519959398;
            "role_id" = AUfegpIF;
            "role_name" = "\U54e5\U6765\U4e86";
            serverInfo =             {
                "first_opentime" = 1546185600;
                "op_sid" = "";
                "new_style" = 4;
                "server_id" = 2021311322;
                "server_name" = "\U63a8\U8bda\U76f8\U4fe1(S1322)";
                type = 31;
            };
            "server_id" = 2021311322;
            "vip_grade" = 0;
            "yz_game_id" = 94;
        },
            {
            extend = "extend";
            level = 1;
            opid = 2107;
            "osdk_user_id" = "0060015_123";
            roleCreateTime = 1519959421;
            "role_id" = oEKQXDCU;
            "role_name" = "\U5e26\U4f60\U8d70";
            serverInfo =             {
                "first_opentime" = 1546185600;
                "op_sid" = "";
                "new_style" = 4;
                "server_id" = 2021311320;
                "server_name" = "\U522b\U4f5c\U826f\U56fe(S1320)";
                type = 31;
            };
            "server_id" = 2021311320;
            "vip_grade" = 0;
            "yz_game_id" = 94;
        }
    );
    msg = "\U67e5\U8be2\U89d2\U8272\U4fe1\U606f\U6210\U529f";
}

5. 进入游戏(必接)

接口描述:进入游戏事件,统计每个角色进入游戏的时间,用于获取列表时的排序,和上传进入游戏时间。

接口调用:

 NSDictionary *gameRole = @{
                             @"osdk_user_id": @"0060015_124",
                             @"yz_game_id": @"94",
                             @"server_id" : @"2021311106",
                             @"opid"      : @"2107",
                             @"role_id"   : @"KLMWElPwP",
                             @"role_name" : @"傲气的决战天",
                             @"level"     : @"1",
                             @"vip_grade" : @"0",
                             @"roleCreateTime":@([[NSDate date] timeIntervalSince1970]), // 创角必传,游戏客户端可取服务端的时间戳,作为创角时间, 10 位
                             @"extend" : @"extend" // 扩展参数,可选
                             };
            
 [SuperSDK invoke:@"xsdk" funcName:@"enterGame" parameters:gameRole];

6. 创建角色(必接)

接口描述:用户创建角色后调用。

接口调用:

 NSDictionary *gameRole = @{
                             @"osdk_user_id": @"0060015_124",
                             @"yz_game_id": @"94",
                             @"server_id" : @"2021311106",
                             @"opid"      : @"2107",
                             @"role_id"   : @"KLMWElPwP",
                             @"role_name" : @"傲气的决战天",
                             @"level"     : @"1",
                             @"vip_grade" : @"0",
                             @"roleCreateTime":@([[NSDate date] timeIntervalSince1970]), // 创角必传,游戏客户端可取服务端的时间戳,作为创角时间, 10 位
                             @"extend" : @"extend" // 扩展参数,可选
                             };
            
 [SuperSDK invoke:@"xsdk" funcName:@"createRole" parameters:gameRole];

7. 更新角色(必接)

接口描述:用户角色信息存在改动的情况下调用,例如:角色等级、角色名称,等等。

接口调用:

 NSDictionary *gameRole = @{
                             @"osdk_user_id": @"0060015_124",
                             @"yz_game_id": @"94",
                             @"server_id" : @"2021311106",
                             @"opid"      : @"2107",
                             @"role_id"   : @"KLMWElPwP",
                             @"role_name" : @"傲气的决战天",
                             @"level"     : @"10",
                             @"vip_grade" : @"0",
                             @"roleCreateTime"  :@([[NSDate date] timeIntervalSince1970]), // 创角必传,游戏客户端可取服务端的时间戳,作为创角时间, 10 位
                             @"extend" : @"extend" // 扩展参数,可选
                             };
 [SuperSDK invoke:@"xsdk" funcName:@"updateRole" parameters:gameRole];

8. 删除角色(选接)

接口描述:删除一个已经创建的角色。

接口调用:

 NSDictionary *gameRole = @{
                             @"osdk_user_id": @"0060015_124",
                             @"yz_game_id": @"94",
                             @"server_id" : @"2021311106",
                             @"opid"      : @"2107",
                             @"role_id"   : @"KLMWElPwP",
                             @"role_name" : @"傲气的决战天",
                             @"level"     : @"10",
                             @"vip_grade" : @"0",
                             @"roleCreateTime":@([[NSDate date] timeIntervalSince1970]), // 创角必传,游戏客户端可取服务端的时间戳,作为创角时间, 10 位
                             @"extend" : @"extend" // 扩展参数,可选
                             };
            
 [SuperSDK invoke:@"xsdk" funcName:@"deleteRoleNew" parameters:gameRole];

接口回调:

 - (void)handlerCallback:(NSString *)moduleName
                funcName:(NSString *)funcName
              parameters:(NSString *)parameters {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
    
    NSDictionary *retParam = nil;
    if (parameters) {
        NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    
    int code = [[retParam objectForKey:@"code"] intValue];
    NSString *desc = [retParam objectForKey:@"msg"];
    id data  = [retParam objectForKey:@"data"];
    
    if ([moduleName isEqualToString:BCORE_MODULE_XSDK]) {// 角色模块回调
        
        if ([funcName isEqualToString: BCORE_FUNC_DELETE_ROLE]) {// 角色查询回调
            if(code == BCORE_SUCCESS) {
               NSLog(@"角色删除成功");
            }
            else {
                NSLog(@"删除数据失败, 原因为%@.", desc);
            }
        }
    }
 }

日志打印:

 moduleName : xsdk,
 funcName : deleteRoleNew,
 parameters : {
  "msg" : "删除角色成功",
  "code" : 1
 }

9. 设置上报时间间隔(选接)

接口描述:设置更新上报角色信息的时间间隔,默认 60 秒。传 0 表示每次更新必定上报。

接口调用:

 [SuperSDK invoke:@"xsdk" funcName:@"setUpdateInterval" parameters:@{@"seconds":@(10)}];

附录

说明:参数为可选返回列参数,如下:

返回列 说明
socket_domain socket 域名
socket_port socket 端口
op_sid 运营商区服 ID
is_active 是否激活
is_recommend 是否推荐
server_url 区服地址
recharge_url 充值地址
recharge_opentime 充值开启时间
notice_opentime 开服预告时间
fcm_time 防沉迷时间
cover_style 是否覆盖区服状态

特殊字段说明

字段名 字段说明 取值说明
type 区服类型 31:正式服、41:永测服、42:外网测试服、43:内网测试服、44:QA 测试服
new_style 新样式 1:正常开启(开服 30 天以上)、3:火爆开启(开服 1 周 - 30 天)、4:即将开启(到达预告时间或在 IP 白名单内可见)、5:停服维护、6:停止激活、7:新开服(开服 1 周)、100:推荐、101:流畅、102:拥挤
cover_style 是否覆盖区服状态 0 不覆盖,1 覆盖

FAQ

Q:接口返回无数据。

A:将请求链接在浏览器中访问,如果返回无数据,需运营在开服系统后台配置。

Q:浏览器中访问的数据,与游戏接口返回的数据不一致。

A:检查 opid,opgameid 等参数是否正确,然后确认后台配置是否有开内网限制。