랭킹 등록 문의

  • 프로젝트명 : 아레테
  • 오류내용 : UpdateUserScore() 사용 / rank not found 에러 나옴.

랭킹 등록을 하려합니다.
랭킹 점수 계산을 위한 테이블 "IFdungeonRank"를 만들어두고 "highestStage"을 랭킹 기준으로 설정했습니다.
“IFdungeonRank” 테이블에는 정상적으로 등록됐습니다.
그런데 등록이후 UpdateUserScore() 로 업뎃하니 rank not found 에러가 나옵니다.
아래는 제코드입니다. 문제가 되는 부분이 뭔지 모르겠습니다.
rawIndate도 정상입니다.

// RANK
    // https://developer.thebackend.io/unity3d/guide/uRanking/user/getRankTable/
    private const string tableName = "IFdungeonRank";
    private const string rankingUUID = "fe8ffa20-1db6-11ec-83a0-77f4e266a1f3";
    private string rowIndate = string.Empty;

    public void Upload_MyRankData(RankData myRankData)
    {
        Param param = new Param();
        param.Add("HighestStage", 5);
        param.Add("NickName", myRankData.NickName);

        var bro = Backend.GameData.Get(tableName, new Where());
        if (bro.IsSuccess())
        {
            if (bro.FlattenRows().Count > 0)
                rowIndate = bro.FlattenRows()[0]["inDate"].ToString();
            else
            {
                var bro2 = Backend.GameData.Insert(tableName, param);
                if (bro2.IsSuccess())
                    rowIndate = bro2.GetInDate();
                else
                    Binder.GPGSManager.NetworkErrorPopupPanel.Open(bro2.GetMessage());
            }
        }
        else
            Binder.GPGSManager.NetworkErrorPopupPanel.Open(bro.GetMessage());

        if (rowIndate == string.Empty)
        {
            Binder.GPGSManager.NetworkErrorPopupPanel.Open("rowIndate is empty.");
            return;
        }

        Debug.LogError("rowIndate : " + rowIndate);
        
        Param rankParam = new Param();
        rankParam.Add("score", 5);
        Dictionary<string, string> extraInfoDic = new Dictionary<string, string>();
        extraInfoDic.Add("Level", myRankData.Level.ToString());
        extraInfoDic.Add("GolemIndex", myRankData.GolemIndex.ToString());
        extraInfoDic.Add("HighestStage", myRankData.HighestStage.ToString());
        for (int i = 0; i < 6; i++)
            extraInfoDic.Add($"Relic{i + 1}", myRankData.RelicStacks[i].ToString());
        for (int i = 0; i < 4; i++)
            extraInfoDic.Add($"Skill{i + 1}", myRankData.SkillIndexes[i].ToString());
        extraInfoDic.Add("SupportIndex", myRankData.SupportIndex.ToString());
        extraInfoDic.Add("PlayerSkinIndex", myRankData.PlayerSkinIndex.ToString());
        extraInfoDic.Add("NickName", myRankData.NickName);
        rankParam.Add("extraData", extraInfoDic);

        var rankBro = Backend.URank.User.UpdateUserScore(rankingUUID, tableName, rowIndate, rankParam);
        if (!rankBro.IsSuccess())
            Binder.GPGSManager.NetworkErrorPopupPanel.Open("UpdateUserScore() / " + rankBro.GetMessage());
    }

안녕하세요 개발자님,
남겨주신 말씀 확인하여 정보 확인시 IFdungeonRank 테이블을 이용하는 유저 랭킹의 UUID가 코드상에 있는 UUID와 다르게 확인되고 있습니다.
코드상에 있는 UUID가 랭킹 UUID가 맞는지 확인해 주세요.

아… 감사합니다. 변수를 여러개 두고 쓰다가 이런일이…

현재 extraData를 못읽어오고 있어서 계속 구현 시도중에 있는데요.
UdateUserScore()를 통해 IFDungeon 테이블에 extraData가 작성은 되는데,
랭킹에는 추가 항목이 비어있습니다.
Backend.URank.User.GetRankList() 로 랭킹에서 리스트를 가져오는데,
추가항목은 어떻게 가져와야 하나요?

자문자답: 앗 죄송합니다. 테이블 생성할때 추가항목을 설정할 수 있었네요.ㅠㅠㅠ

좋아요 1