区服模块提供获取服务器列表,角色列表相关功能。
注意一:区服模块需申请参数,并在打包工具配置。接入完成后需确认是否接入成功。
注意二:区服模块获取的信息只做显示玩家历史角色、服务器、等级信息。
注意三:区服模块提供的信息不可作为游戏活动的依据。
注意四:游戏需要对外网预告服做进入游戏的限制。
接口描述:获取区服列表。
接口调用:
[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
}
接口描述:获取推荐服列表。
接口调用:
[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
}
接口描述:获取最近登录角色信息。
接口调用:
[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";
}
接口描述:获取角色列表。
接口调用:
[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";
}
接口描述:进入游戏事件,统计每个角色进入游戏的时间,用于获取列表时的排序,和上传进入游戏时间。
接口调用:
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];
接口描述:用户创建角色后调用。
接口调用:
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];
接口描述:用户角色信息存在改动的情况下调用,例如:角色等级、角色名称,等等。
接口调用:
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];
接口描述:删除一个已经创建的角色。
接口调用:
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
}
接口描述:设置更新上报角色信息的时间间隔,默认 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 覆盖 |
Q:接口返回无数据。
A:将请求链接在浏览器中访问,如果返回无数据,需运营在开服系统后台配置。
Q:浏览器中访问的数据,与游戏接口返回的数据不一致。
A:检查 opid,opgameid 等参数是否正确,然后确认后台配置是否有开内网限制。