在Google页首横幅(最新图书馆)中获得用户排名

时间:2018-08-01 12:46:55

标签: android google-play-services

我想获取当前用户在排行榜中的位置。

我已经实现了登录和页首横幅用户界面,但是我实在无法获得这个排名。

我尝试遵循一些旧的解决方案,但是无法用新版本的google library实现。

例如,我尝试过solution,没有运气。

1 个答案:

答案 0 :(得分:-1)

更新玩家的分数     游戏通过调用LeaderboardsClient.submitScore(),并传入排行榜ID和原始分数值来更新排行榜上的分数。

以下代码段为例,展示了您的应用如何更新播放器的得分:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

一个好的做法是在strings.xml文件中定义排行榜ID,以便您的游戏可以通过资源ID引用排行榜。拨打电话更新和加载玩家分数时,请确保也遵循这些最佳做法,以避免超出您的API配额。

显示排行榜     要显示排行榜,请调用LeaderboardsClient.getLeaderboardIntent()以获得创建默认排行榜用户界面的意图。然后,您的游戏可以通过调用startActivityForResult来调出用户界面。

以下代码段为例,展示了您的应用如何更新玩家的得分。在代码段中,RC_LEADERBOARD_UI是请求代码的任意整数。

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}
Notice that even though no result is returned, you have to use startActivityForResult so that the API can obtain the identity of the calling package.

实施后-

要检索当前已登录玩家的玩家统计数据,请按照以下步骤操作:

调用PlayerStatsClient.loadPlayerStats()方法。 如果调用成功,则Google Play游戏服务会返回一个Task对象,该对象异步加载PlayerStats对象。使用此对象的方法来检索有关您应用中已登录播放器活动的数据。

示例: 公共无效checkPlayerStats(){   Games.getPlayerStatsClient(this,GoogleSignIn.getLastSignedInAccount(this))       .loadPlayerStats(true)       .addOnCompleteListener(new OnCompleteListener>(){         @Override         public void onComplete(@NonNull Task>任务){           如果(task.isSuccessful()){             //检查缓存的数据。             如果(task.getResult()。isStale()){               Log.d(TAG,“使用缓存的数据”);             }             PlayerStats stats = task.getResult()。get();             if(stats!= null){               Log.d(TAG,“已加载玩家统计信息”);               如果(stats.getDaysSinceLastPlayed()> 7){                 Log.d(TAG,“已经超过一周了”);               }               如果(stats.getNumberOfSessions()> 1000){                 Log.d(TAG,“老玩家”);               }               如果(stats.getChurnProbability()== 1){                 Log.d(TAG,“玩家有高流失风险”);               }             }           }其他{             int状态= CommonStatusCodes.DEVELOPER_ERROR;             如果(task.getException()instanceof ApiException){               状态=(((ApiException)task.getException())。getStatusCode();             }             Log.d(TAG,“无法获取统计数据状态:”                 + status +“:” + task.getException());           }         }       }); }