限制 Google Play Games API 调用

Posted

技术标签:

【中文标题】限制 Google Play Games API 调用【英文标题】:Limiting Google Play Games API Calls 【发布时间】:2015-10-29 15:07:32 【问题描述】:

在我的游戏中,我使用 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);
               

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

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

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

androidios 客户端库都知道不发送 如果您的分数不如您,玩家的分数到服务器 最近提交。

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

如果对 Play Games API 有更多了解/经验的人能够确认我看到的 API 调用数量是否正确,以及这与上面的引用有何关系,或者我是否应该做更多的事情,我将不胜感激在我的代码中做什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于限制 Google Play Games API 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 中的 Google Play Games API 中提取多个排行榜?

在哪里提交有关 Google Play Games API 的错误报告?

Google Play Games C++ API - 无法以编程方式访问好友

从 Google Play Games API 获取用户 ID?

Google Play Games Services Leaderboard API,看不到其他玩家的分数

100% “google.play.games.games.v1.Applications.RecordApplicationActivity” 一个月以来