常见问题解答

本文档解答了有关 SDK 和针对 Google Play Games 电脑版发布游戏的常见问题。

创收

  1. 我可以在没有后端服务器的情况下使用购买流程吗?

    从安全角度来看,Google 建议您使用后端服务器。

    如需了解详情,请参阅在没有后端服务器的情况下处理

  2. 集成 Google Play Games 电脑版 SDK 后,是否允许使用基于 API 的现有支付系统?

    所有付款都必须由 Google Play 游戏电脑版 SDK 使用 Google Play 结算服务来处理。您无法在同一游戏中同时使用基于 API 的现有支付方式。

  3. 如何在开发者模式下处理购买交易?

    在开发者模式下处理购买交易,必须在 3 分钟内完成,否则购买交易将被退款。

  4. 是否支持定期付款或订阅?

    目前不支持,但欢迎您提供具体的使用情形,以便我们将其添加到未来的路线图中。

  5. 我的购买调用中的结算错误是什么?

    BillingError 是支付结果的响应。LaunchPurchaseFlow 会立即返回,而不会阻塞,但您必须监听回调,才能知道它何时完成并捕获结果。

  6. 如何使用客户端购物验证?

    我们建议使用服务器端购买及其验证流程。 如需处理来自客户端应用的购买交易,您的游戏必须位于许可名单中。如果您的游戏需要访问权限,请与您的 Google 合作伙伴联系。 如需了解详情,请参阅在没有后端服务器的情况下处理

  7. 查询商品详情的 API 限制是什么?

    在对 QueryProductDetails API 的单次调用中,最多可以查询 50 件商品。如果超出此限制,您必须将请求拆分为多次调用。

  8. 在结算客户端中调用 Query Purchases 或 Launch Purchase Flow 时,需要哪些参数?

    该函数接受 QueryPurchasesContinuation,这是一个具有 std::function<void(QueryPurchasesResult)> 签名的函数 回调。回调会向您传递包含所有 ProductPurchaseDetails 的结果。 此信息位于 includes/billing/models.h 文件中的 SDK 头文件中。

    生成的 launch_purchase_flow_result 具有 ok()code() 函数。ok() 函数会返回流程是否成功。code() 函数会返回 BillingError 枚举 (includes/billing/enums.h),其中包含 10 种可能的错误情况,例如用户取消或网络错误。

  9. 结算客户端中的 Launch Purchase Flow 是否支持自定义排序?

    在当前的 SDK 设计中,无法传入您自己的载荷。 不过,您可以提供 obfuscated_account_idobfuscated_profile_id 的任意组合。您可以不提供、仅提供其中一个或同时提供两者。

    offer_token 字段是必需的,用于指定用户在结账流程中尝试购买的购买优惠。目前,Google Play 中的每个 SKU 都有且仅有一个优惠(例如,以 10 美元的价格购买一件商品)。未来,Play 结算团队将提供对多个优惠的支持。

    为确保在购买流程中断的情况下关联元数据,请在启动购买对话框之前将元数据存储在后端服务器上,并将其与用户的账号 ID、正在购买的 SKU 和当前时间戳相关联。如需了解详情,请参阅 将购买交易与内部数据相关联

  10. 如果用户在购买流程中关闭浏览器而不付款,是否会发生超时错误?

    是的,这是一个已知问题,也是基于浏览器的流程中的预期行为。 我们正在积极开发无缝购买功能(基于 WebView),该功能会将支付流程保留在游戏内,并解决此超时不便问题。

  11. 从使用 OAuth 的 Google 结算服务切换到使用 DLL 的原生 Google 结算服务需要满足哪些前提条件?

    游戏可以继续使用 OAuth 登录 Google 来管理已登录的账号,但 Google 建议您停止使用旧版 REST 结算 API。从 REST 结算 API(使用 OAuth2 登录)切换到 SDK 流程可能是一项带有功能标志的操作,因此在游戏切换期间,两者可以共存一段时间。

  12. Launch Purchase Flow API 调用是否通过网络浏览器处理?

    是的,目前是通过浏览器处理的。Google 计划通过 SDK 实现无需离开游戏即可完成整个流程。

  13. 用户是否需要为每个游戏单独登录才能进行购买?

    Google Play 游戏中的前台账号用于每个游戏会话,因此您无需再次登录。游戏会话开始时,您在 Google Play Games 中使用的账号就是发出 API 调用的账号。在浏览器中启动购买流程时,您必须登录并使用与游戏会话相同的账号。如果用户使用其他账号登录,网络流程会提示他们切换账号。

  14. 游戏是否可以同时支持原生 SDK 和旧版支付系统?

    支付系统根据游戏二进制版本以双流程模式运行。旧版 build 的用户继续使用现有流程,而新 build 的用户则过渡到基于 SDK 的支付。在过渡期间,两种支付流程的用户共存。

Windows App Bundle

  1. 使用第三方启动器提交 WAB 时,是否需要审核游戏软件包?

    您只需提交安装程序,无需提交整个游戏软件包,审核者将能够使用安装程序下载您的游戏软件包。

  2. WAB 文件大小是否有任何限制?

    您可以上传最大 10 GB 的 WAB 文件。

  3. 为什么在上传 WAB 后,我的游戏无法安装或显示?

    如果您的游戏是在没有预先存在的 PC 版本(“首次 WAB”)的情况下进行上架,系统可能会自动将其置于“托管发布”保留状态。发生这种情况是因为没有可供更新的现有基准。 如需完全发布 WAB 并让游戏可供安装,您 必须前往 Google Play 管理中心,然后手动执行 所需的发布操作(例如,点击“发布更改”)。

  4. 如何上传 WAB 以进行内部测试?

    与 Google 分享许可名单账号,以便 Google 为其启用内部测试。Google 获得该列表后,会确保将其纳入上架流程。

  5. 应将 WAB 软件包上传到哪里?

    您可以将 WAB 软件包上传到第一个问题中提到的位置。不过,您无法手动发布。您必须向 Google 后端工作人员提供精确的 UTC 时间(精确到小时)。然后,Google 会配置发布时间表,并确保按时发布。

PC SDK

  1. 旧版 API 与 Google Play 游戏电脑版有何区别

    SDK 之间有哪些区别?

    • 我们的旧版 API 仅提供结算功能。
    • PC SDK 支持 Google Desktop Service (GDS) 和完整的 PC 功能。
    • 使用 PC SDK 时,无需基于浏览器的 Google 登录。
  2. 有没有其他方法可以初始化 SDK,例如直接使用游戏启动器启动游戏,而无需通过 Google Play Games 电脑版?

    您的游戏必须通过 Google Play 游戏电脑版客户端启动。如需了解 详情,请参阅此开发者文档

  3. 原生 PC SDK 是否支持 PEM 证书文件中的多字节字符?

    是的,该 SDK 支持使用多字节字符进行认证。

  4. 该 SDK 如何处理多个实例或账号的 Google 账号登录?

    在 Google Play 游戏 中启动的每个游戏都被视为“游戏会话”,每个“游戏会话”都可以关联一个账号。它们可以不同。因此,如果您使用账号 A 启动游戏,然后切换到账号 B 并重新启动,则两者可以同时运行。

  5. Play Install Referrer 集成是否适用于 PC SDK?

    PC SDK(25.5.409.0 及更高版本)支持 Play Install Referrer API。 如需了解详情,请参阅 Play Install Referrer API

启动器

  1. 如果玩家使用第三方启动器而不是 Google Play 客户端,他们的 Play 游戏服务账号是否会自动同步?

    如需让 SDK 函数正常运行,游戏必须直接通过 Google Play 游戏客户端启动。如果其他进程(例如安装程序或启动器应用)启动游戏,则该进程本身必须从 Google Play 游戏客户端启动。游戏必须将从客户端收到的所有参数传递给客户端进程。

  2. 如果 Google Play 游戏 启动第三方游戏启动器,我该如何处理初始化?

    您无需将 SDK 直接集成到启动器中。 不过,您必须将启动器从 Google Play 游戏客户端收到的所有命令行实参直接传递给生成的子进程(游戏可执行文件)。如果初始化失败(例如,返回 kActionRequiredShutdownClientProcess),则必须终止包括启动器在内的所有进程,以便 Google Play 游戏可以尝试恢复并自动重新启动游戏。如需了解详情,请参阅设置指南中的 第 5 步

  3. 游戏和启动器投入生产后,如何处理游戏和启动器的更新和维护?

    后续更新和维护必须通过启动器实现。Google Play 游戏客户端不支持更新功能,因此启动器必须能够更新游戏和启动器本身。

  4. 安装程序如何接收自动游戏的 GPG 会话令牌?

    GPG 使用 --g_session_token=<token> 命令行实参将会话令牌传递给安装程序。如需启用此功能,您必须在 play_publishing_config.xml 中设置 acceptsCommandLineArguments="true"

    安装程序负责提取此令牌并使用它来启动游戏。如果令牌生成失败,GPG 将在没有令牌的情况下启动安装程序(回退)。

初始化

  1. 当我使用 Google Play 游戏应用启动游戏时,它是否会同步我的 Google 账号详细信息?

    通过 Google Play 游戏客户端启动游戏后,账号会自动同步,无需再次通过 Google 登录流程登录。

  2. 是否可以多次重复使用初始化参数?

    只要 Google Play 游戏客户端正在运行且登录信息有效,就可以重复使用。不过,在指南中所述的场景中,当用户关闭游戏或游戏因 SDK 初始化失败(例如 kActionRequiredShutdownClientProcess)而退出时,游戏启动的所有进程都必须终止。

  3. 有没有办法创建快捷方式来直接打开游戏?

    您可以使用以下 URI 直接打开游戏:

    googleplaygames://launch/?pid=2&id=com.company.gamename

    该 URI 支持检测 Google Play 游戏电脑版客户端是否已打开。如果客户端未打开,Google Play 游戏客户端会在游戏或启动器运行之前打开。您需要管理游戏或启动器,以防止运行多个实例。

  4. 有没有办法在不使用 SDK 的情况下验证 Google Play 游戏电脑版的安装?

    您无需集成 SDK,只需检查是否存在以下 Windows 注册表项,即可验证 Google Play Games 电脑版的安装状态:

    HKEY_LOCAL_MACHINE\SOFTWARE\Google\Play Games Services

    如果存在此项,则表示计算机上已安装 Google Play 游戏服务(在 PC 上运行游戏所必需)。如果该项 缺失,您应引导用户前往 Google Play 游戏电脑版安装页面下载并安装 客户端。

测试

  1. 是否有类似于移动设备的开放式测试或封闭式测试环境?

    虽然没有专用的端到端沙盒,但我们认识到开发者需要类似生产环境的测试环境。我们很快就会提供更强大的解决方案。

  2. 如何添加新的测试人员?

    您的 Google 联系人会为每个 PC 项目创建一个电子邮件群组,您必须将测试人员的 Google 账号添加到该群组中。只有此电子邮件群组的成员才有权在 Google Play 游戏 中下载测试软件包。

其他

  1. 我可以使用 VPN 吗?

    对于需要在不支持 Google Play Games 电脑版的 地区测试游戏的开发者,我们建议您使用 VPN 来 从 受支持的地区获取 IP 地址。

    确保在 VPN 上启用 TUN 模式。如需了解如何启用 TUN 模式和配置防火墙,请参阅 VPN 提供商的操作手册。

    启用 TUN 模式后,安装 Google Play 游戏电脑版和 模拟器以进行测试。

  2. 如何在 Unity 或 UE 编辑器中开始针对 Google Play 游戏电脑版进行开发?

  3. 如何正确使用注册表项?

    您应根据根配置单元创建注册表项。您可以根据自己的用途和数据的性质,将根配置单元设置为 HKEY_LOCAL_MACHINEHKEY_CURRENT_USER。该指南中以 HKEY_LOCAL_MACHINE 配置单元为例。

  4. Google 审核 PC 软件包有哪些要求?

    PC 软件包会接受恶意软件扫描,之后审核者只会测试游戏安装、成功启动和卸载流程。

  5. 是否必须集成所有 API?

    其他 API 不是必需的,但它们可以提供额外的优势。 google::play::billing 是进行应用内购买和销售数字内容所必需的。google::play::install_referrer 是跟踪引荐数据所必需的,可帮助您了解哪些流量来源发送的用户最多,从而下载您的应用。google::play::games::integrity 是保护您的应用免受不良行为者的侵害所必需的,可检测潜在的风险设备和未知模拟器。

  6. 为什么在关闭 Google Play 游戏客户端时,某些游戏进程会终止,而其他游戏进程则不会?

    Google 不控制正在运行的游戏的子进程或进程。 该行为取决于游戏是 Android 模拟游戏还是原生 PC 游戏。模拟游戏安装在自己的环境中,因此其行为很大程度上取决于模拟器的初始化和关闭。

  7. 我应该使用 Google Play 游戏 卸载功能还是自定义卸载程序?

    Google 建议您使用我们的 Google Play 游戏 卸载功能。

其他帮助

如果您需要本文档未涵盖的其他帮助,请发送电子邮件至 google-play-games-pc@google.com