限制 Google 玩游戏 API 通话

Limiting Google Play Games API Calls

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

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

我只是这样称呼排行榜:

public void displayLeaderBoard(){

    if (getGameHelper().isSignedIn()){

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

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

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

这里的问题是,如果我随后退出应用程序并再次提交分数,它会使用另外 3 个 API 调用。文档指出:

Both the Android and iOS client libraries will know not to send a player's score to the server if your score isn't as good as one you recently submitted.

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

如果有更多 knowledge/experience Play 游戏 API 的人可以确认我看到的 API 来电数量是否正确以及这与引用上面的内容,或者我的代码中是否应该做更多的事情?

您看到的来电次数很可能是正确的。对于许多 API,每个请求都有一个与之相关的 "cost"。这意味着对某个 API 的读取请求可能会花费您 1 次调用,写入请求可能会花费您 5 次(只是假设)。因此,根据您发出的请求,与发出的请求数相比,您的呼叫次数会有所不同。例如,试试这个 tool 来计算 Youtube API 配额成本。不幸的是,我找不到适用于 Play 游戏服务的任何此类工具或文档 API,但我希望这能阐明我的观点。

为了优化您的代码以使其发挥最佳性能,请查看 here 并尝试优化您的代码以尽可能遵循最佳实践。