我想以检索在排行榜当前用户的位置。
我已经实现了登录和排行榜UI,但我真的不能得到这个级别的车程。
我试图按照一些旧的解决方案,但无法与谷歌图书馆的新版本中实现。
例如,我试过solution,没有运气。
更新玩家的得分游戏通过调用LeaderboardsClient.submitScore()
更新他们在领先榜上的分数,并通过在排行榜ID和原始分数值。
下面的代码片段为例说明你的应用程序如何更新玩家的分数:
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.submitScore(getString(R.string.leaderboard_id), 1337);
好的做法是在strings.xml文件中定义排行榜ID,那么你的游戏可以通过资源ID引用排行榜。当拨打电话进行更新和负载球员得分时,请务必也遵循这些最佳做法,以避免超出API配额。
显示排行榜要显示排行榜,请拨打LeaderboardsClient.getLeaderboardIntent()
得到一个意向,以创建默认领先的用户界面。然后,您的游戏可以通过调用startActivityForResult
弹出UI。
下面的代码片段为例说明你的应用程序如何更新玩家的分数。中的代码片断,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()方法。如果调用成功,谷歌Play游戏服务返回一个异步加载PlayerStats对象任务对象。使用此对象的方法,您的应用程序检索有关登录的玩家的活动数据。
例如:公共无效checkPlayerStats(){Games.getPlayerStatsClient(这一点,GoogleSignIn.getLastSignedInAccount(本)).loadPlayerStats(真).addOnCompleteListener(新OnCompleteListener>(){@覆盖公共无效的onComplete(@NonNull任务>任务){如果( task.isSuccessful()){//检查高速缓存的数据,如果(task.getResult()isStale()){Log.d(TAG, “使用高速缓存的数据”);。。} PlayerStats统计= task.getResult()。获得();如果(统计!= 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, “无法抓取统计数据状态:” +状态+ “:” + task.getException());}}}); }