在 Google Play 游戏中更新(递增/递减)排行榜得分

Posted

技术标签:

【中文标题】在 Google Play 游戏中更新(递增/递减)排行榜得分【英文标题】:Update (increment/decrement) leaderboard score in Google Play Games 【发布时间】:2017-09-12 01:41:36 【问题描述】:

我使用以下代码将用户的分数提交给 Google Play Games:

if(getApiClient().isConnected())
            Games.Leaderboards.submitScore(getApiClient(), getString(R.string.number_guesses_leaderboard),newScore);

但这不会增加排行榜的分数,它只是替换分数。始终显示相同的值。 newScore 是我想要增加当前分数的数量。

【问题讨论】:

【参考方案1】:

例如,您需要使用SharedPreferences 在本地保存当前分数,然后将新的total 分数提交到 Google Play 游戏服务。看看 Google Play 游戏团队的this 示例,特别是他们使用AccomplishmentsOutbox 在本地存储分数,直到将分数传输到 API。

【讨论】:

这个例子是错误的,他们不刷新排行榜,它只是本地的【参考方案2】:

这是我用来增加 google play 服务排行榜的方法。如果返回的分数为空,则发布分数 1。否则,当前分数会增加 1。例如,这对于跟踪每日分数很有用。请注意使用 TIME_SPAN_DAILY 来指示所需的时间跨度。这将检索当天发布的最高分数,假设在设置排行榜时指示“越高越好”。

     private void incrementDailyLeaderboard(final LeaderboardsClient leaderboardsClient, final String leaderboardId) 

    leaderboardsClient.loadCurrentPlayerLeaderboardScore(
            leaderboardId,
            LeaderboardVariant.TIME_SPAN_DAILY,
            LeaderboardVariant.COLLECTION_PUBLIC
    ).addOnSuccessListener(this, new OnSuccessListener<AnnotatedData<LeaderboardScore>>()
        @Override
        public void onSuccess(AnnotatedData<LeaderboardScore> leaderboardScoreAnnotatedData) 
            //Log.v("onSuccess","onSuccess");
            if (leaderboardScoreAnnotatedData != null) 
                long score = 0;
                if (leaderboardScoreAnnotatedData.get() != null) 
                    score = leaderboardScoreAnnotatedData.get().getRawScore();
                    //Log.v("Your score is", Long.toString(score));
                
                leaderboardsClient.submitScore(leaderboardId, ++score);
            
        
    );

【讨论】:

以上是关于在 Google Play 游戏中更新(递增/递减)排行榜得分的主要内容,如果未能解决你的问题,请参考以下文章

如何在 google play 上更新增量成就

Google Play 游戏排行榜发布分数报告成功但不更新

Android 模拟器上的 Google Play 服务和 Google Play 游戏应用

Google Play 游戏强制登录

Google Play 游戏服务成就活动立即结束

为啥在“Google Play 游戏”中没有显示“排行榜”和“功能”标签?