注意:Google Maps Platform 游戏服务自 2021 年 10 月 18 日起已弃用。现有用户在 2022 年 12 月 31 日之前仍可继续使用。在此期间,我们会继续针对重大错误和服务中断提供支持和修复方案。请参阅游戏服务转换指南,获取相关资源,以帮助您规划项目的后续步骤。

生产最佳实践

Google 建议您在管理和运行应用时遵循以下最佳做法。

保护 API 密钥

您需要有 API 密钥才能使用我们的在线服务,而且有了该密钥,Google 便可以衡量您的用量。我们建议您限制 API 密钥,以防止未经授权的使用。

API 密钥限制的类型

API 密钥限制分为两类,您可以同时使用这两种限制。

限制类型仅限
API 限制 特定 API。
应用限制 特定 IP 地址、网站或应用。

API 密钥限制建议

在以下情况下,我们建议您调试单独的 API 密钥。

场景建议
您的后端游戏服务器调用 Playable Locations API 来检索可播放位置。 配置具有以下两个限制的密钥:
  • API 限制:仅允许调用 Playable Locations API。
  • 应用限制:仅允许来自后端游戏服务器的 IP 地址的调用。
应用的 Android 版本会调用 Maps SDK for Unity 来检索地理位置数据。 配置具有应用限制的密钥,只允许来自应用的 Android 版本进行调用。
应用的 iOS 版本会调用 Maps SDK for Unity API 来检索地理位置数据。 配置具有应用限制的密钥,只允许来自应用的 iOS 版本的调用。

如需了解详情,请参阅 API 安全性最佳实践

设置 API 密钥限制

  1. 访问 Google Cloud 控制台中的“凭据”面板
  2. 选择需要设置限制的 API 密钥。系统随即会显示 API 密钥属性页面。
  3. 密钥限制下,选择应用限制标签页,然后选择四种应用限制类型之一。
    限制类型 说明
    HTTP 引荐来源 接受来自您提供的一系列网站的请求。
    IP 地址 接受来自您提供的一系列网络服务器 IP 地址的请求。
    Android 应用 添加软件包名称和 SHA-1 签名证书指纹,以仅限您的 Android 应用使用。
    iOS 应用 接受来自 iOS 应用(具有您提供的软件包标识符)的请求。
  4. 密钥限制下,选择 API 限制标签页,然后选择要将 API 密钥限制为的 API。
  5. 点击保存

支持 API 密钥更新

确保您拥有基础架构,可用于在整个服务堆栈中更新 API 密钥。这样,如果您的 API 密钥被盗,您需要恢复游戏,但需要短时间内续订。

为每个应用使用单独的密钥,因此您可以轻松地在一个应用中更换一个密钥,而不会影响其他应用。

游戏服务器安全建议

当 Playable Locations API 服务器因任何原因遇到服务中断时,当多个游戏服务器同时尝试重新连接时,就会出现问题。这种 QPS 峰值会使服务器进入 DoS 模式,通过屏蔽传入流量加剧这种状况。

为了缓解这种情况,Google 要求您在游戏服务器上实现二进制指数退避算法。这是一种系统隔离连接重试机制的方法。具体而言,您将实现一种算法,在尝试重新连接失败后等待 N 秒,然后重试。如果下一次尝试失败,那么您的算法会在等待期间加倍,然后重试。如果下一次尝试失败,您的算法再次将等待期延长一倍,然后重试。每次尝试后,您都需要继续将等待期延长一倍,直到最终尝试成功。

处理 HTTP 返回状态代码

您应该为部分(而非全部)HTTP 返回代码实现二进制指数退避。

400 秒
这些是通常不会恢复的客户端错误,因此,重试生成这些错误代码的失败请求将不起作用。您应该在测试期间捕获这些类型的错误。
429
当您开始用尽 API 配额时,会发生资源耗尽错误。如需查看您项目的 API QPS 限额,请访问 Google API 配额
500 秒
这些是服务器端错误,指数退避算法最适用于此类错误。