# 排行榜

# 概述

# 功能介绍

在关键的游戏场景,设置写入用户的排行榜数据(游戏成绩信息),该数据会上传到平台服务端,通过接口可以获取用户的排行信息,目前只提供获取全局排行的接口,暂不支持获取好友排行信息

# 排行榜设置

字段 说明
游戏app id 开发者创建游戏审核通过后获取的appid,在开发者后台查询
榜单名称 榜单的描述,系统不实际使用
榜单唯一标识 大小写英文字符组合,无空格,16个字符以内,游戏内唯一,同一游戏不同国家可共用一个标识,系统会自动隔离不同国家的榜单
周期 榜单更新周期:
day:日榜(当地时间自然日),
week:周榜(当地时间从周一到周日自然周),
month:月榜(当地时间从1号到月底),
activity:活动榜(开始年月日时分秒 ~ 截止年月日时分秒):指定起始时间的活动榜单,时间均为当地时间
forever:永久有效
注:一个榜单只能选择一种周期,一个游戏可以有多个榜单
排序方式 榜单排序方式:
asc:按照从小到大正序排(比如需要对达成某一个目标的耗时排序,耗时越短排名越靠前),
desc:按照从大到小倒序排(比如需要对积分进行排序,积分越大排名越靠前)

以上排行榜设置信息通过联系平台运营提供

# 注意事项

在上传用户数据之前,用户必须完成登录流程,并通过授权接口ks.authorize 向用户发起授权请求,获取'scope.userInfo'权限。 在测试期,开发者需要联系运营提供测试的用户ID和排行榜设置。

# 上传用户数据接口

# 语法

ks.setRankData(Object object);

# 参数说明

属性 类型 必填 说明
rankKey string 排行榜设置的唯一标识,用于区分多个排行榜(需要事先在后台创建排行榜,如无创建入口,联系运营)
score int 分数
group string 排行榜分组,长度不超过64字节,只能使用英文字母大小写和数字组合。如果设置了分组,则用户只在组内排行,分组数据与总榜数据隔离;如果不设置,则默认返回总榜前100名数据。(例:可按照城市分组,将分数设置为分组数据)
success function 接口调用成功回调函数
fail function 接口调用失败回调函数
complete function 接口调用结束回调函数(调用成功、失败都会执行)

# 示例代码

ks.setRankData({
    rankKey: "xxx", //排行榜标识
    score: 666, //该用户得了666分
    success() {
        console.log(`setRankData success`);
    },
    fail(res) {
        console.log(`setRankData fail res: ${res.errMsg}`);
    },
    complete() {
        console.log(`setRankData complete`);
    }
});

# 查询排行榜接口

# 功能介绍

查询全局排行榜,默认返回列表前100名

# 语法

ks.getRankData(Object object);

# 参数

属性 类型 必填 说明
rankKey string 排行榜唯一标识,用于区分多个排行榜
group string 排行榜分组,根据分组信息获取组内排行榜数据
pageNum int 第几页,从1开始(可不填,无值时默认返回榜单前100名)
pageSize int 每页大小,最大值50(可不填,无值时默认返回榜单前100名)
success function 接口调用成功回调函数
fail function 接口调用失败回调函数
complete function 接口调用结束回调函数(调用成功、失败都会执行)

# 示例代码

ks.getRankData({
    rankKey: "xxx",
    success: (res) => {
        console.log("getRankData success")
    },
    fail: (res) => {
        console.error(`getRankData fail res: ${res.errMsg}`)
    },
    complete: () => {
        console.log(`getRankData complete`);
    }
})

# 查询排行榜成功返回数据示例

{
    "ranklist": [{
        "openId": "xxxxx",
        "nickName": "zhangsan",
        "headImage": "http://xxxxavatarxxxxxxx.jpg",
        "rank": 1, 
        "score": 666
    }, {
        "openId": "xxxxxx",
        "nickName": "lisi",
        "headImage": "http://xxxxavatarxxxxxxx.jpg",
        "rank": 2,
        "score": 666
    }],
    "userInfo": { // 当前用户排名信息
        "openId": "xxxxx",
        "nickName": "zhangsan",
        "headImage": "http://xxxxavatarxxxxxxx.jpg",
        "rank": 1, // 若没上榜,则不会返回此字段
        "score": 666 // 若没上榜,则不会返回此字段
    }
}