本文档解答了有关 SDK 和针对 Google Play 游戏电脑版进行发布的常见问题。
创收
在添加新的结算或许可密钥后,为什么我的购买流程会失败并显示错误代码 6?
在 Google Play 管理中心内新生成的许可密钥在商务后端会经历数小时的缓存和传播延迟,然后 Google Play 的内部缓存才能在所有服务环境中同步。即使游戏客户端可以成功查询商品详情,在同步完成之前,购买请求也会失败并返回错误代码 6。上传或更新许可密钥后,请等待几个小时,然后再测试购买交易。
我可以在没有后端服务器的情况下使用购买流程吗?
从安全角度来看,Google 建议使用后端服务器。
如需了解详情,请参阅无后端服务器的进程。
集成 Google Play Games 电脑版 SDK 后,是否允许使用基于 API 的现有支付系统?
所有付款都必须由 Google Play 游戏电脑版 SDK 使用 Google Play 结算服务来处理。您无法在同一款游戏中继续使用基于 API 的现有支付方式。
如何在开发者模式下使用购买交易?
在开发者模式下,在 3 分钟内处理购买交易,否则系统将退款。
是否支持定期付款或订阅?
虽然我们近期没有相关计划,但欢迎您提供具体的使用情形,以便我们将其纳入未来的路线图。
购买调用中的结算错误是什么?
BillingError 是付款结果的响应。LaunchPurchaseFlow 会立即返回,而不会阻塞,但您必须监听回调,才能知道它何时完成并捕获结果。
如何使用客户端购物验证?
我们建议使用服务器端购买及其验证流程。 处理来自客户端应用的购买交易需要将游戏添加到许可名单中。如果您的游戏需要访问权限,请与您的 Google 合作伙伴联系。 如需了解详情,请参阅无后端服务器的进程。
查询商品详情的 API 限额是多少?
在对
QueryProductDetailsAPI 的单次调用中,可查询的商品数量上限为 50。如果超出此限制,您必须将请求拆分为多次调用。在结算客户端中调用“查询购买交易”或“启动购买流程”时,需要哪些参数?
该函数接受
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 种可能的错误情况,例如用户取消或网络错误。结算客户端中的启动购买流程是否支持自定义排序?
在当前的 SDK 设计中,无法传入您自己的载荷。 不过,您可以提供
obfuscated_account_id和obfuscated_profile_id的任意组合。您可以不提供任何一个,也可以只提供一个,还可以同时提供这两个。offer_token字段是必需的,用于指定用户在结账流程中尝试购买的购买优惠。目前,Google Play 中的每个 SKU 都有一个报价(例如,以 10 美元的价格购买一件商品)。未来,Play 结算团队将支持多种优惠。为确保在购买流程中断的情况下关联元数据,请在启动购买对话框之前将元数据存储在后端服务器上,并将其与用户的账号 ID、正在购买的 SKU 和当前时间戳相关联。如需了解详情,请参阅将购买交易与内部数据相关联。
从基于 OAuth 的 Google 结算切换到基于 DLL 的 Google 结算需要满足哪些前提条件?
游戏可以继续使用 OAuth 登录 Google 来管理已登录的账号,但 Google 建议您停止使用旧版 REST 结算 API。从 REST 结算 API(使用 OAuth2 登录)切换到 SDK 流程可以是一项通过功能标志控制的操作,因此在游戏切换期间,两者可以共存一段时间。
Launch Purchase Flow API 调用是否通过网络浏览器处理?
不会,购买流程现在完全在游戏内完成,使用无缝 WebView 叠加层,无需离开游戏客户端。
用户是否需要为每款游戏单独登录才能进行购买?
Google Play 游戏中的前台账号会用于每个游戏会话,因此您无需再次登录。游戏会话开始时,您在 Google Play Games 中使用的账号就是发出 API 调用的账号。购买流程将自动使用此账号。
游戏能否同时支持 PC SDK 和旧版支付系统?
支付系统采用双流模型,具体取决于游戏二进制版本。使用旧版 build 的用户继续沿用现有流程,而使用新版 build 的用户则会过渡到基于 SDK 的付款方式。在过渡期内,采用这两种付款流程的用户会同时存在。
Windows App Bundle
使用第三方启动器提交 WAB 时,是否需要提供游戏软件包以供审核?
您只需提交安装程序,无需提交整个游戏软件包,审核人员将能够使用安装程序下载您的游戏软件包。
WAB 文件大小是否有任何限制?
对于安装程序发布,您可以上传大小不超过 10 GB 的 WAB 文件。对于 Play 受管发布,WAB 文件大小上限为 200 GB。
为什么上传 WAB 后,我的游戏无法安装或显示?
如果您的游戏在没有预先存在的 PC 版本的情况下进行初始配置(“首次 WAB”),系统可能会自动将其置于自管式发布暂留状态。这是因为没有可供更新的现有基准。 如需完全发布 WAB 并使游戏可供安装,您必须前往 Google Play 管理中心,手动执行所需的发布操作(例如,点击“发布更改”)。
如何上传 WAB 以进行内部测试?
与 Google 共享许可名单账号,以便 Google 能够启用这些账号进行内部测试。Google 收到该列表后,会确保这些应用包含在新手入门流程中。
应将 WAB 软件包上传到何处?
您可以在第一个问题中提到的位置上传 WAB 软件包。不过,您无法手动发布。您必须向 Google 后端工作人员提供精确的 UTC 时间(精确到小时)。然后,Google 会配置发布时间表,确保按时发布。
PC SDK
旧版 API 与 Google Play 游戏电脑版 SDK 之间有何区别?
- 旧版 API 仅提供结算功能。
- PC SDK 支持 Google Desktop Service (GDS) 和完整的 PC 功能。
- 使用 PC SDK 时,无需基于浏览器的 Google 登录。
有没有其他方法来初始化 SDK?例如,直接使用游戏启动器启动游戏,而无需通过 Google Play 游戏电脑版?
游戏必须通过 Google Play 游戏电脑版客户端启动。如需了解详情,请参阅此开发者文档。
PC SDK 是否支持 PEM 证书文件中的多字节字符?
可以,SDK 支持使用多字节字符进行认证。
SDK 如何处理多个实例或账号的 Google 账号登录?
Google Play 游戏中的每次游戏启动都被视为一个“游戏会话”,每个“游戏会话”都可以关联一个账号。它们可能有所不同。因此,如果您使用账号 A 启动游戏,然后切换到账号 B 并重新启动,这两个账号可以同时运行。
Play Install Referrer 集成是否适用于 PC SDK?
PC SDK(25.5.409.0 及更高版本)支持 Play Install Referrer API。 如需了解详情,请参阅 Play Install Referrer API。
启动器
如果玩家使用第三方启动器而不是 Google Play 客户端,其 Play 游戏服务账号是否会自动同步?
为了使 SDK 函数正常运行,游戏必须通过 Google Play 游戏客户端直接启动。如果其他进程(例如安装程序或启动器应用)启动游戏,则该进程本身必须从 Google Play 游戏客户端启动。游戏必须将从客户端收到的所有参数传递给客户端进程。
如果 Google Play 游戏 启动第三方游戏启动器,如何处理初始化?
您无需将 SDK 直接集成到启动器中。 不过,您必须将启动器从 Google Play 游戏客户端收到的所有命令行实参直接传递给生成的子进程(游戏可执行文件)。如果初始化失败(例如,通过返回
kActionRequiredShutdownClientProcess),则必须终止包括启动器在内的所有进程,以便 Google Play 游戏可以尝试恢复并自动重新启动游戏。如需了解详情,请参阅设置指南中的第 5 步。游戏和启动器投入生产后,如何处理更新和维护事宜?
后续更新和维护必须通过启动器实现。Google Play 游戏客户端不支持更新功能,因此启动器必须能够更新游戏和启动器本身。
安装程序如何接收自动播放的 GPG 会话令牌?
GPG 会使用
--g_session_token=<token>命令行实参将会话令牌传递给安装程序。如需启用此功能,您必须在play_publishing_config.xml中设置acceptsCommandLineArguments="true"。安装程序负责提取此令牌并使用它来启动游戏。如果令牌生成失败,GPG 会在没有令牌的情况下启动安装程序(回退)。
初始化
当我使用 Google Play 游戏应用启动游戏时,该应用是否会同步我的 Google 账号详细信息?
通过 Google Play 游戏客户端启动游戏后,账号会自动同步,无需再次通过 Google 登录流程登录。
是否可以多次重复使用初始化参数?
只要 Google Play 游戏客户端正在运行且登录信息有效,就可以实现此功能。不过,在指南中所述的场景中,当用户关闭游戏或游戏因 SDK 初始化失败(例如
kActionRequiredShutdownClientProcess)而退出时,游戏启动的所有进程都必须终止。有没有什么方法可以创建快捷方式来直接打开游戏?
您可以使用以下 URI 直接打开游戏:
googleplaygames://launch/?pid=2&id=com.company.gamename该 URI 支持检测 Google Play 游戏电脑版客户端是否已打开。如果客户端未打开,Google Play 游戏客户端会在游戏或启动器运行之前打开。您需要管理游戏或启动器,以防止运行多个实例。
有没有办法在不使用 SDK 的情况下验证 Google Play 游戏电脑版的安装?
您无需集成 SDK,只需检查是否存在以下 Windows 注册表项,即可验证 Google Play Games 电脑版的安装状态:
HKEY_LOCAL_MACHINE\SOFTWARE\Google\Play Games Services如果存在此键,则表示计算机上已安装 Google Play Games 服务(在 PC 上运行游戏所必需)。如果缺少密钥,您应引导用户前往 Google Play 游戏电脑版安装页面下载并安装客户端。
测试
是否有任何与移动设备类似的开放式测试或封闭式测试环境?
虽然目前没有专门的端到端沙盒,但我们认识到开发者需要一个类似生产环境的测试环境。我们很快就会提供更强大的解决方案。
如何添加新的测试人员?
您的 Google 联系人会为每个 PC 项目创建一个电子邮件群组,测试人员的 Google 账号必须添加到该群组中。只有此电子邮件群组的成员才有权在 Google Play 游戏 中下载测试软件包。
其他
我可以使用 VPN 吗?
对于需要在不支持 Google Play Games 电脑版的地区测试游戏的开发者,我们建议您使用 VPN 从支持的地区获取 IP 地址。
确保在 VPN 上启用 TUN 模式。有关启用 TUN 模式和配置防火墙的指南,请参阅 VPN 提供商的操作手册。
如何在 Unity 或 UE 编辑器中开始为 Google Play Games 电脑版开发游戏?
- 启用开发者模式,然后继续进行测试。
- 添加
manifest.xml和.dll文件。如需了解详情,请参阅开发者文档。 - 注册一个抢先体验合作伙伴 GUID 以进行测试。
如何正确使用注册表项?
您应基于根配置单元创建注册表项。您可以根据自己的目的和数据的性质,将根 Hive 设置为
HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER。该指南中以HKEY_LOCAL_MACHINEhive 为例。Google 对 PC 软件包的审核有哪些要求?
PC 软件包会接受恶意软件扫描,之后审核人员只会测试游戏安装、成功启动和卸载流程。
是否必须集成所有 API?
其他 API 不是必需的,但它们可提供额外的好处。 应用内购和销售数字内容时必须使用
google::play::billing。google::play::install_referrer用于跟踪引荐数据,帮助您了解哪些流量来源吸引的用户最多,从而下载您的应用。google::play::games::integrity用于检测可能存在风险的设备和未知模拟器,从而保护您的应用免受恶意行为者的侵害。为什么在 Google Play Games 客户端关闭时,有些游戏进程会被终止,而有些则不会?
Google 不控制正在运行的游戏的子进程或进程。 行为取决于游戏是模拟的 Android 游戏还是 PC 游戏。模拟游戏安装在自己的环境中,因此其行为在很大程度上取决于模拟器的初始化和关闭。
我应该使用 Google Play 游戏 卸载功能还是自定义卸载程序?
Google 建议使用我们的 Google Play 游戏 卸载功能。
其他帮助
如果您需要本常见问题解答未涵盖的进一步帮助,请发送电子邮件至 google-play-games-pc@google.com