# 排行榜系统

# 一、介绍

该系统是世界排行榜,展示玩家排行的功能,具体配置参考排行榜配置

# 二、使用

代码中使用方式

// 导入模块
import { rankSystem } from "@timi/mogs-sdk";
...
// 获取指定排行榜类型的实例,rankType来自于配置文件中的type
this.leaderboard = await rankSystem.getLeaderboard(rankType);
...
// 获取该类型排行榜的玩家数据
const list = this.leaderboard.playerRankInfos;
...
// 加载更多玩家数据
this.leaderboard.loadMore({
    amount: this.pageSize,
});
...
// 刷新该类型排行榜的玩家数据
this.leaderboard.refresh({
    amount: this.pageSize,
});
...
// 监听该类型排行榜的新增事件
this.leaderboard.onLoadMore((res) => {
    // TODO
});
// 监听该类型排行榜的新刷新事件
this.leaderboard.onRefresh((res) => {
    // TODO
});
...
// 获取玩家自身的信息
const mySelfInfo = await this.leaderboard.getSelfRankInfo();
...
// 上报玩家分数,注意,这里可以在extraInfo带上玩家自身的信息用于展示
this.leaderboard.uploadRankValue({
    type: this.rankType,
    rankValue: parseInt(score, 10),
    extraInfo: extraInfo,
    success: () => {
        mogs.showToast({
            icon: "none",
            title: `分数上报成功`,
        })
    },
    fail: () => {
        mogs.showToast({
            icon: "none",
            title: `分数上报失败`,
        });
    },
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

TIP

更多排行榜模块的api请参考排行榜模块

# 三、上报到游戏平台

上报到平台需要在配置文件 mogs.json 中加入配置信息,同时需要在各个平台后台配置与排行榜有关的部分,当调用 API uploadRankValue 时即会自动上报到游戏平台。

举个例子,有如下需求:

  • 在有乐环境,MOGS 后台排行榜类型为 1 的榜,对应有乐的排行榜
  • 在微信环境,MOGS 后台排行榜类型为 2 的榜,对应微信后台配置 key 为 "rankA" 的排行榜
  • 在 QQ 环境,MOGS 后台排行榜类型为 3 的榜,对应 QQ 后台配置 key 为 "rankB" 的排行榜

则可配置如下:

{
    // ...(其他配置)

    // 上报到游戏平台排行榜相关配置
    "platformRankingList": {
        // 有乐环境,值对应于后台配置到排行榜类型 ID
        "cymini": 1,
        // 微信环境,接受类型 Record<string, string[]>,我们记字典中左边为 key,右边为 value
        // key 是在 MOGS 后台配置的排行榜类型 ID
        // value 是在 微信 后台配置的排行榜 key 值,可以包括一系列在后台配置的 key 值,构成一个数组
        // 微信排行榜配置参见指南 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/ranklist.html
        "wx": [{
            "2": ["rankA"]
        }],
        // QQ 环境,与微信环境配置类似
        "qq": {
            "3": ["rankB"]
        },
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20