如何从 Android 中的 Google Play Games API 中提取多个排行榜?
Posted
技术标签:
【中文标题】如何从 Android 中的 Google Play Games API 中提取多个排行榜?【英文标题】:How do I pull multiple leaderboards from the Google Play Games API in Android? 【发布时间】:2014-05-13 00:40:39 【问题描述】:我正在开发一款多层次的 android 游戏,我想在登录后获得高分。 我正在这样做:
Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]),
LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC)
.setResultCallback(this);
但是回调没有给我排行榜ID:
@Override
public void onResult(LoadPlayerScoreResult res)
我只得到分数 (res.getScore()
)。
那么我必须为我的 25 个关卡中的每一个都创建回调还是有更好的解决方案?
这也不行:
for (int i = 0; i < 25; i++)
Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]),
LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC)
.setResultCallback(new ResultCallback<LoadPlayerScoreResult>()
@Override
public void onResult(LoadPlayerScoreResult res)
// can't use variable i here
);
【问题讨论】:
我认为你的方法不对。如果您已经拥有排行榜 ID,为什么还需要它。您正在将它输入到方法中,为什么需要它回来。 因为我必须知道我得到了哪个结果(对于第一种方法,使用一个 onResult 侦听器)。当然,如果我复制 25 次,我知道排行榜 ID,但应该有比这更好的解决方案。 那么你的目标到底是什么,你想以最有效的方式从 25 个不同的排行榜中获取玩家的分数? 完全正确,无需复制相同的语句 25 次,只需更改排行榜 id 索引;) 在这种情况下,只需使用您输入的 for 循环。它有什么问题? 【参考方案1】:在你的 java 文件中定义这个内部类:
public class Leaderboard implements ResultCallback<Leaderboards.LoadPlayerScoreResult>
private Leaderboard(String id)
leaderboardId = id;
private String leaderboardId = "";
@Override
public void onResult(LoadPlayerScoreResult arg0)
// TODO Auto-generated method stub
System.out.println(leaderboardId);
现在使用这个代码:
for (int i = 0; i < 25; i++)
Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]),
LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC)
.setResultCallback(new Leaderboard(getString(LEADER_BOARDS[i])));
现在让我稍微解释一下这是如何工作的。 Leaderboard 类实现了 ResultCallback,因此在您获得玩家分数后,它会在 setResultCallback 方法中使用。现在,在 for 循环中,每次获取分数的调用都将类排行榜的不同对象设置为结果回调,并且每个对象都被赋予唯一的排行榜 ID,该 ID 使用构造函数保存在类中,并且正如您在课堂上看到的那样,有一个方法可以让您在 onresult 中返回 leaderboardid。
【讨论】:
哈哈,我还没有测试它,但它应该可以工作;)我会告诉你的。 只是好奇。我已经尝试过类似的代码,它适用于 2-3(第一个)9 的排行榜。我认为某种限制。它真的有用吗?以上是关于如何从 Android 中的 Google Play Games API 中提取多个排行榜?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 google plus 帐户中注销 google plus 在 android 中的集成
通过 Google Ads 在 Flutter 中安装 Referrer
如何将变量从 AsyncTask 返回到 Android 中的 Google Map 活动
如何使用google plus的accessToken从不同的活动中注销android中的用户