本模块功能自运营 SDK 3.13.0
开始提供
排行榜是用户在游戏内参与活动后产生挑战时间/分数成绩的排行
游戏使用成就系统提供的
API,获取所有榜单数据、榜单排名区间数据、取角色排名数据,
更新角色排行分数,获取当前用户头像地址、昵称等接口。
在正式接入好友系统前,接入方需要确认以下流程已完善:
向 SDK 开发人员提交游戏 Game Key,和 APK 签名的
sha256摘要,SDK 对接人员会协助填写,
并将最后得到的公钥给游戏开发,游戏应妥善保管此类参数
如何获取公钥参考:获取 Android 应用签名证书指纹
为定义一个榜单,游戏应提供以下信息给 SDK 对接人员:
内容 | 定义 | 说明 |
---|---|---|
排行榜名称 | 榜单名称 | 后台需要上传,仅作为排行ID对应的名称记录 |
排行榜标识 | 排行榜唯一标识 | 通过标识返回对应排行榜的数据(仅限数字+英文,最多100个字符) |
排行榜周期 | 榜单更新周期 | 凌晨0点更新,仅限 日榜,周榜,月榜,季榜,年榜,无限制 |
排行顺序 | 排行榜排序顺序 | 支持 正序 或 倒序 |
排行策略 | 排行上报数据的更新策略 | 支持 累计(上报数据直接累加)、最新(只记录最新数据)、最好(只记录最好数据) |
为方便接入方提交信息,可以按照 4399 SDK 排行榜配置模板 填写成就配置
在调用本服务相关接口前,游戏应先调用下面前置接口:
GameChart.init
,初始化公钥,在使用排行榜其他接口前,应调用此接口进行初始化
/**
* 服务初始化
*
* @param publicKey 接口公钥,完成游戏服务配置得到
*/
public static void init(String publicKey)
调用示例:
//参数:publicKey,开发者后台的游戏公钥,可联系相应的运营获取
.init(String publicKey); GameChart
GameChart.getGameChart
,获取所有榜单数据
/**
* 获取所有榜单数据
*
* @param listener 回调对象
*/
public static void getGameChart(OpeDataListener<List<ChartDescriptor>> listener);
调用示例:
.getGameChart(new OpeDataListener<List<ChartDescriptor>>() {
GameChart@Override
public void onFinished(int code, String message, List<ChartDescriptor> data) {
}
});
接口调用后通过接口OpeDataListener<List<ChartEntity>>
返回游戏榜单列表
OpeDataListener
,通用泛型回调接口,接入方调用方法后通过接口方法接收并处理调用结果
ChartDescriptor
,角色成就数据模型,里面包含了游戏所定义的成就列表信息
两个类的具体信息在本文档后文的 API
详情部分,接口示例中涉及的其他类也是如此
GameChart.getChartByRange
,获取榜单排名区间数据,区间用起始、结束值确定
/**
* 获取榜单排名区间数据
*
* @param rankId 榜单id,必须
* @param serverId 区服id,未分服传0
* @param start 榜单排名区间起始index,包括此位置值对应的项
* @param end 榜单排名区间结束index,包括此位置值对应的项
* @param listener 回调对象
*/
public static void getChartByRange(String rankId, int serverId,
int start, int end,
<List<ChartItem>> listener) OpeDataListener
调用示例:
.getChartByRange(String rankId, int serverId, int start, int end,
GameChartnew OpeDataListener<List<ChartItem>>() {
@Override
public void onFinished(int code, String message, List<ChartItem> data) {
}
});
GameChart.getChartAroundRole
,获取角色附近排名数据,角色附近的范围,通过指定本角色之前多少位、之后多少位确定
/**
* 获取角色排名数据
*
* @param rankId 榜单id,必须
* @param serverId 区服id,未分服传字符串0
* @param roleId 游戏角色id, 游戏不分角色传字符串0
* @param before 当前角色前几名,包括此位置值对应的项
* @param after 当前角色后几名,包括此位置值对应的项
* @param listener 回调对象
*/
public static void getChartAroundRole(String rankId, int serverId, String roleId,
int before, int after,
<List<ChartItem>> listener); OpeDataListener
调用示例:
.getChartAroundRole(String rankId, int serverId, String roleId,
GameChartint before,int after, new OpeDataListener<List<ChartItem>>() {
@Override
public void onFinished(int code, String message, List<ChartItem> data) {
}
});
GameChart.updateByRole
,更新角色排行数据
/**
* 更新角色排行分数
*
* @param rankId 排行榜id
* @param serverId 区服id,未分服传字符串0
* @param roleId 游戏角色id,游戏不分角色传字符串0
* @param roleAvatar 头像地址,无头像或不需要时,可传null
* @param roleName 角色名/昵称,无角色名/昵称或不需要时,可传null
* @param score 排名数值
* @param listener 回调对象
*/
public static void updateByRole(String rankId, int serverId, String roleId,
String roleAvatar, String roleName, float score,
<Boolean> listener) OpeDataListener
调用示例:
.updateByRole(String rankId, int serverId, String roleId, String avatar,
GameChartString roleName,float score, new OpeDataListener<Boolean>() {
@Override
public void onFinished(int code, String message, Boolean data) {
//data为true代表更新角色分数成功,反之为更新失败
}
});
GameChart.getPtUser
,获取当前已登录用户在平台的信息,这些信息是对登录后的用户信息的补充
/**
* 获取当前用户头像地址、昵称
*/
public static PtUser getPtUser()
何时使用接口:如果游戏在排行榜中展示角色头像、昵称等信息,但是游戏本身没有相关信息,
则可以获取用户平台信息,并通过GameChart.updateByRole
更新到排行数据中
调用示例:
= GameChart.getPtUser(); PtUser ptUser
/**
* 数据监听器
*/
public interface OpeDataListener<T> {
/**
* @param code 0为请求成功,并返回数据, 其他code均为失败,失败时数据可能为空
* @param message 说明文案
* @param data 返回数据
*/
void onFinished(int code, @Nullable String message, @Nullable T data);
}
code | 含义 |
---|---|
0 | 成功 |
1 | 取消 |
2 | 处理中,可能是延迟 |
3 | 失败,可从message中了解更多信息 |
4 | 接口返回超时 |
5 | 数据加密解密错误 |
/**
* 排行榜描述信息,游戏可能有多个排行榜
*/
public class ChartDescriptor {
/** 排行榜ID */
public final String rankId;
/** 排行榜名称 */
public final String rankName;
/** 游戏key */
public final String gameKey;
/** 排行周期 */
public final String interval;
/** 排行策略 */
public final String strategy;
/** 排行顺序 */
public final String order;
/** 当前版本 */
public final String version;
/** 是否维护,1为维护中 */
public final String maintain;
/** 排行榜过期时间 */
public final String expiredAt;
/** 排行榜激活时间 */
public final String activatedAt;
}
/**
* 一个排行榜中某一项的信息
*/
public class ChartItem {
/** 排名 */
public final String rank;
/** 角色头像地址 */
public final String roleAvatar;
/** 角色ID */
public final String roleId;
/** 角色名 */
public final String roleName;
/** 成绩 */
public final float score;
}
/**
* 平台用户信息,作为登录信息的补充
*/
public class PtUser {
/** 平台用户 id */
public final String ptUid;
/** 头像地址 */
public final String sFace;
/** 昵称 */
public final String nick;
}