Android 获取谷歌排行榜中的用户排名(最新库)
我想检索当前用户在排行榜中的位置 我已经实现了登录和排行榜用户界面,但我真的无法获得这个排名 我试图遵循一些旧的解决方案,但无法用新版本的谷歌库实现Android 获取谷歌排行榜中的用户排名(最新库),android,google-play-services,Android,Google Play Services,我想检索当前用户在排行榜中的位置 我已经实现了登录和排行榜用户界面,但我真的无法获得这个排名 我试图遵循一些旧的解决方案,但无法用新版本的谷歌库实现 例如,我尝试过,没有运气。更新玩家的分数 游戏通过调用LeadboardsClient.SubmitCore并传入排行榜ID和原始分数值来更新他们在排行榜上的分数 以下代码片段作为示例显示了应用程序如何更新玩家的分数: Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAcc
例如,我尝试过,没有运气。更新玩家的分数 游戏通过调用LeadboardsClient.SubmitCore并传入排行榜ID和原始分数值来更新他们在排行榜上的分数 以下代码片段作为示例显示了应用程序如何更新玩家的分数:
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.submitScore(getString(R.string.leaderboard_id), 1337);
一个好的做法是在strings.xml文件中定义排行榜ID,以便您的游戏可以按资源ID引用排行榜。在调用更新和加载玩家分数时,请确保也遵循以下最佳做法,以避免超过API配额
显示排行榜
要显示排行榜,请调用LeaderboardsClient.getLeaderboardIntent以获取创建默认排行榜用户界面的意图。然后,您的游戏可以通过调用startActivityForResult来打开UI
以下代码片段作为示例显示了应用程序如何更新玩家的分数。在代码段中,RC_Leadboard_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 games services将返回一个任务对象,异步加载PlayerStats对象。使用此对象的方法检索有关已登录玩家在应用程序中的活动的数据
例如:
公共无效棋盘手状态{
Games.getPlayerStatsClientthis,GoogleSignIn.GetLastSignedAccountThis
.loadPlayerStatstrue
.AddOnCompleteListener新建OnCompleteListener>{
@凌驾
公共空间onComplete@NonNull任务>任务{
如果task.isSuccessful成功{
//检查缓存数据。
如果task.getResult.isStale{
Log.dTAG,使用缓存数据;
}
PlayerStats stats=task.getResult.get;
如果stats!=null{
Log.dTAG,加载玩家统计信息;
如果stats.getDaysSinceLastPlayed>7{
Log.dTAG,已经超过一周了;
}
如果stats.getNumberOfSessions>1000{
Log.dTAG,资深玩家;
}
如果stats.getProbability==1{
Log.dTAG,玩家面临高流失风险;
}
}
}否则{
int status=CommonStatusCodes.DEVELOPER\u错误;
如果task.getException instanceof ApiException{
status=ApiException task.getException.getStatusCode;
}
Log.dTAG,无法获取统计数据状态:
+状态+:+task.getException;
}
}
};
}您的代码解释了如何实现排行榜,我问的是如何检索用户的排名。仍然不认为这是正确的答案,我想要一个不同的方法尝试检查getRank,如本相关文章中所述。在中,可以使用getDisplayRank、getDisplayRank或“getRank”。仍然找不到更新的示例来使用它。