【问题标题】:Android loadCurrentPlayerLeaderboardScore not always returning result valuesAndroid loadCurrentPlayerLeaderboardScore 并不总是返回结果值
【发布时间】:2016-10-13 16:47:02
【问题描述】:

loadCurrentPlayerLeaderboardScore 方法有时会从我的排行榜返回值,而其他时候则没有结果,因此为 LB_SCORELB_RANK 返回 999。我已连接到 google play 游戏服务,我可以使用startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mClient, leaderboardId), 1); 查看排行榜,因此我可以确认有有效分数。如何使呼叫loadCurrentPlayerLeaderboardScore 更可靠、更一致?

public void populateLeaderboards(){

    String[] leaderboardIdArray = getResources().getStringArray(R.array.leaderboard_id_array);
    String[] leaderboardNameArray = getResources().getStringArray(R.array.leaderboard_name_array);

    leaderboardList = new ArrayList<LeaderboardItem>();
    leaderboardList.clear();

    for (int i = 0; i < leaderboardIdArray.length; i++) {

        Log.d("leaderboardIdArray", leaderboardIdArray[i]);

         getLeaderboardData(leaderboardIdArray[i],leaderboardNameArray[i]);
LeaderboardItem(leaderboardIdArray[i], LB_NAME, String.valueOf(LB_SCORE), String.valueOf(LB_RANK));


    }

}     

private void getLeaderboardData(final String leaderboardId,final String  leaderboardName) {

    Games.Leaderboards.loadCurrentPlayerLeaderboardScore(mClient, leaderboardId, LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC).setResultCallback(new ResultCallback<Leaderboards.LoadPlayerScoreResult>() {
    //Games.Leaderboards.loadPlayerCenteredScores(mClient, leaderboardId, LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 1, true).setResultCallback(new ResultCallback<Leaderboards.LoadPlayerScoreResult>() {

        @Override
        public void onResult(final Leaderboards.LoadPlayerScoreResult scoreResult) {

            if (isScoreResultValid(scoreResult)) {
                // here you can get the score like this

                LB_SCORE = scoreResult.getScore().getRawScore();
                LB_RANK = scoreResult.getScore().getRank();


            } else {

                LB_SCORE = 999;
                LB_RANK = 999;

            }

            LeaderboardItem leaderboardItem = new LeaderboardItem(leaderboardId, leaderboardName, String.valueOf(LB_SCORE), String.valueOf(LB_RANK));
            leaderboardList.add(leaderboardItem);


        }


    });
}


private boolean isScoreResultValid(final Leaderboards.LoadPlayerScoreResult scoreResult) {
    return scoreResult != null && GamesStatusCodes.STATUS_OK == scoreResult.getStatus().getStatusCode() && scoreResult.getScore() != null;
}

【问题讨论】:

    标签: java android google-play-services google-play-games


    【解决方案1】:

    我遇到了类似的问题,我看到other post confirms 我怀疑拨打太多电话会导致网络错误。所以我的建议是你滥用播放服务太多了。

    【讨论】:

    • 你知道是否有任何官方的谷歌文档吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多