Skip to main content
本页涵盖 PlayFab Services SDK 的完整启动和关闭序列。每个游戏都遵循相同的高层模式:配置可选钩子、初始化 Core、创建服务配置、初始化 Services、执行业务逻辑,然后按相反顺序关闭。

初始化序列

初始化分为四步。第一步是可选的;其余三步是必需的。

第 1 步:设置自定义内存钩子(可选)

如果你的游戏使用自定义内存分配器,请在调用任何其他 PlayFab API 之前调用 PFMemSetFunctions。这会将所有 SDK 的内存分配路由到你自己的 allocfree 回调。
PFMemSetFunctions 必须在 PFInitialize 之前调用。一旦钩子设置完成,就不能再次调用。
如果你不需要自定义内存管理,可以跳过这一步。SDK 会使用默认的分配例程。

第 2 步:初始化 PlayFab Core

PFInitialize 设置 SDK 的全局状态,包括 HTTP 层和后台任务队列。具体签名因平台而异。

Windows、Linux、iOS 和 macOS

如果想控制哪个队列处理后台工作,请传入一个 XTaskQueueHandle。传入 nullptr 以使用默认的线程池队列。

Android

在 Android 上,你还必须提供 Java VM 和应用程序上下文,以便 SDK 可以初始化 libHttpClient:
如果你没有显式调用 PFInitializePFServicesInitialize 会使用默认参数在内部调用它。对于大多数游戏来说这没问题。但是,如果你通过 PFMemSetFunctions 使用自定义内存钩子,你必须自己调用 PFInitialize — 否则 PFServicesInitialize 会在你的内存钩子生效之前初始化 Core,SDK 会转而使用默认的分配例程。

第 3 步:创建服务配置

PFServiceConfigCreateHandle 创建一个句柄,告诉 SDK 目标是哪个 PlayFab 游戏(title)和端点。你可以在 Game Manager 中找到这两个值。
返回的 PFServiceConfigHandle 是所有后续登录调用所必需的。

第 4 步:初始化 PlayFab Services

PFServicesInitialize 在 Core 之上设置 Services 层(Inventory、Leaderboards、Friends 等)。

Windows、Linux、iOS 和 macOS

该参数保留供将来使用;请传入 nullptr

Android

在 Android 上,传入一个包含 Java VM 和应用程序上下文的 HCInitArgs 结构:
此调用成功后,SDK 便已准备就绪。你可以登录玩家并进行服务调用。

PFServiceConfigHandle 生命周期

PFServiceConfigHandle 是一个引用计数的句柄。SDK 通过引用计数管理其内部生命周期,但你负责关闭自己拥有的每一个句柄。

复制句柄

当你需要在管理自己生命周期的组件之间共享服务配置时,使用 PFServiceConfigDuplicateHandle

关闭序列

关闭与初始化相反。你必须在 Core 之前反初始化 Services,且两个调用都是异步的。

第 1 步:关闭所有已打开的句柄

在拆除 SDK 之前,关闭你拥有的每一个 PFEntityHandlePFServiceConfigHandle

第 2 步:反初始化 Services

PFServicesUninitializeAsync 拆除 Services 层。在继续之前等待其完成。

第 3 步:反初始化 Core

Services 清理完成后,调用 PFUninitializeAsync 拆除 Core:
如果你没有显式调用 PFInitialize,则可以跳过 PFUninitializeAsync。在这种情况下,PFServicesUninitializeAsync 会自动处理 Core 的清理。但是,如果你自己调用了 PFInitialize,则必须自己调用 PFUninitializeAsync

完整示例

以下示例展示了 Windows 游戏从初始化到关闭的完整生命周期:

常见错误

参见

最后修改于 2026年8月25日