我想获取当前用户在排行榜中的位置。
我已经实现了登录和页首横幅用户界面,但是我实在无法获得这个排名。
我尝试遵循一些旧的解决方案,但是无法用新版本的google library实现。
例如,我尝试过solution,没有运气。
答案 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()); } } }); }