본문으로 건너뛰기
버전: 5.16.0

GetPastLeaderboard

public BackendUserPastLeaderboardReturnObject GetPastLeaderboard(string leaderboardUuid, int limit = 10, int offset = 0)

파라미터

ValueTypeDescriptionDefault
leaderboardUuidstring조회할 리더보드의 uuid-
limitint불러올 리더보드 유저의 수( 1 ~ 100)10
offsetint조회할 리더보드의 uuid(0이상)0

설명

리더보드 보상이 측정된 리더보드의 갱신되기 전 마지막 리더보드 순위를 불러옵니다.

  • 보상이 존재하는 리더보드만 가능합니다.
  • 리더보드 보상을 받은 유저들의 과거 리더보드만 표시됩니다.
    • 리더보드 보상이 10등까지에게만 주어질 경우, 11등부터의 과거 리더보드은 불러올 수 없습니다.
    • 순위권 밖이지만 전체 보상의 범위에 포함된 유저도 과거 리더보드에는 표시되지 않습니다.
  • 특정 유저의 과거 리더보드, 내 과거 리더보드만 특정하여 불러올 수 없습니다.
  • 과거 리더보드 중 제일 최신인 과거 리더보드 하나를 대상으로 불러옵니다.
    • 일간 리더보드일 경우, 1일 전 과거 리더보드 데이터를 불러오게 되며 2일 전 리더보드은 불러오지 못합니다.
  • limit을 0이하로 입력할 경우 1로 적용됩니다. 100이상일 경우에는 100으로 적용됩니다.
  • offset을 0이하로 입력할 경우 0으로 적용됩니다.
  • 닉네임이 존재하지 않는 유저의 경우, ""으로 출력됩니다.
  • 해당 함수는 SendQueue로 호출할 수 없습니다.
탈퇴 유저의 경우

과거 리더보드 리스트중 탈퇴한 유저가 있을 경우에는 해당 유저의 nickname과 inDate 컬럼은 존재하지 않습니다.
jsonData.ContainsKey("nickname")으로 컬럼을 확인한 뒤에 데이터를 가공해주세요.

탈퇴된 유저

{"score":"7835","rank":1}

일반 유저

{"score":"7833","rank":3,"nickname":"user1","inDate":"2024-03-06T05:59:53.523Z"}

BackendUserPastLeaderboardReturnObject

namespace BackEnd.Leaderboard
{
public class UserPastLeaderboardItem
{
public string nickname;
public string inDate;
public string score;
public string rank;
}

public class BackendUserPastLeaderboardReturnObject : BackendReturnObject
{
public List<UserPastLeaderboardItem> GetUserPastLeaderboardList();
}
}

Example

동기


// 리더보드 1위 부터 10위까지
BackEnd.Leaderboard.BackendUserPastLeaderboardReturnObject bro = Backend.Leaderboard.User.GetPastLeaderboard("01920445-a435-759e-bc3b-048a1e7a87aa");

foreach(BackEnd.Leaderboard.UserPastLeaderboardItem item in bro.GetUserPastLeaderboardList())
{
string name = $"[{item.rank}] {item.nickname} : {item.score}";
Debug.Log(item);
}

// 리더보드 11위(offset + 1) 부터 111위까지((offset + 1 + limit)
Backend.Leaderboard.User.GetPastLeaderboard("a61c6980-db5f-11ee-95a9-73cbb1225013", 100, 10);

비동기

Backend.Leaderboard.User.GetPastLeaderboard("a61c6980-db5f-11ee-95a9-73cbb1225013", 10, 0, callback => {
foreach(BackEnd.Leaderboard.UserPastLeaderboardItem item in callback.GetUserPastLeaderboardList())
{
string name = $"[{item.rank}] {item.nickname} : {item.score}";
Debug.Log(item);
}
});

ReturnCase

Success cases

조회에 성공한 경우
statusCode : 200
message : Success
returnValue : GetReturnValuetoJSON 참조

Error cases

과거 리더보드의 보상 집계가 되지 않은 경우
statusCode : 200
message : Success
returnValue : {"rows":[]}

uuid가 null 혹은 string.Empty인 경우
statusCode : 400
errorCode : ValidationException
message : leaderboardUuid is null or empty

존재하지 않는 uuid로 조회를 시도한 경우
statusCode : 404
errorCode : NotFoundException
message : leaderboard not found, leaderboard을(를) 찾을 수 없습니다

누적 리더보드의 과거 리더보드을 조회 시도한 경우
statusCode : 428
errorCode : Precondition Required
message : Precondition Required rank initial type

GetReturnValuetoJSON

{
"rows": [
{
"score": "7835", // 탈퇴된 유저일 경우 nickname과 inDate가 출력되지 않습니다.
"rank": 1
}
{
"score": "5834",
"rank": 2,
"nickname": "user2",// 닉네임이 존재하지 않는 유저일 경우, ""로 출력됩니다
"inDate": "2024-03-06T05:59:53.523Z"
},
{
"score": "5121",
"rank": 3,
"nickname": "user3",
"inDate": "2024-03-06T05:59:51.568Z"
}
]
}