限制Google Play游戏API调用

时间:2015-08-06 12:48:27

标签: android google-play-services google-play-games leaderboard

在我的游戏中,我使用Google Play游戏获得成就和排行榜。

我刚刚注意到(通过登录Google API控制台),执行简单操作(如显示排行榜)会产生2个API调用。我原以为这只会是1。

我只是简单地调用排行榜:

public void displayLeaderBoard(){

    if (getGameHelper().isSignedIn()){

        if (leaderboardIntent==null){
            leaderboardIntent = Games.Leaderboards.getLeaderboardIntent(getApiClient(), leaderboardID);
        }           
            startActivityForResult(myLeaderboard, 1);
    }           
}

请注意,即使第二次按下leadeboard按钮,它仍然是2个API调用(因此不会创建新的' leaderboardIntent')。

此外,在提交高分时,它会使用3个API调用(一个用于提交,然后再调用displayLeaderboard()以向玩家显示她/他的新高分。

这里的问题是,如果我然后退回到应用程序并再次提交分数,它将使用另外3个API调用。文档说明:

  

Android和iOS客户端库都知道不发送   如果您的分数与您的分数不同,则该分数将获得该分数   最近提交了。

我知道我可以简单地在sharedPreferences中存储高分的副本,如果它不够高,则不提交,但我不确定 - 如果设备有多个帐户怎么办?例如设置。

如果有更多Play Games API知识/经验的人可以确认我看到的API调用的数量是否正确以及这与上面的引用有何关联,或者是否还有其他内容,我将不胜感激应该在我的代码中做什么?

1 个答案:

答案 0 :(得分:1)

您看到的来电数量非常正确。对于许多API,每个请求都有一个与其相关的“成本”。这意味着对某个API的读取请求可能会花费您1次调用,写入请求可能会花费您5(只是假设)。因此,根据您提出的请求,与请求数量相比,您的呼叫数量会有所不同。例如,尝试使用此tool来计算Youtube API配额费用。遗憾的是,我找不到Play Games Services API的任何此类工具或文档,但我希望这能说清楚我的观点。

为了优化代码以实现最佳效果,请查看here并尝试优化代码,以尽可能遵循最佳实践。