Skip to main content
このページでは、PlayFab Services SDK の完全な起動とシャットダウンのシーケンスについて説明します。すべてのタイトルは同じ高レベルパターンに従います: オプションのフックを構成し、Core を初期化し、サービス構成を作成し、Services を初期化し、作業を行い、その後逆順でシャットダウンします。

初期化シーケンス

初期化には 4 つのステップがあります。最初はオプションで、残りの 3 つは必須です。

ステップ 1: カスタムメモリフックの設定 (オプション)

タイトルがカスタムメモリアロケーターを使用する場合、他の PlayFab API の前に PFMemSetFunctions を呼び出します。これにより、すべての SDK メモリ割り当てが独自の alloc および free コールバックを経由するようになります。
PFMemSetFunctionsPFInitialize の前に呼び出す必要があります。フックが設定された後に再度呼び出すことはできません。
カスタムメモリ管理が不要な場合は、このステップをスキップしてください。SDK はデフォルトの割り当てルーチンを使用します。

ステップ 2: PlayFab Core の初期化

PFInitialize は、HTTP レイヤーとバックグラウンドタスクキューを含む SDK のグローバル状態を設定します。正確なシグネチャはプラットフォームによって異なります。

Windows、Linux、iOS、および macOS

バックグラウンドの作業を処理するキューを制御したい場合は XTaskQueueHandle を渡します。デフォルトのスレッドプールキューを使用するには nullptr を渡します。

Android

Android では、SDK が libHttpClient を初期化できるように、Java VM とアプリケーションコンテキストも提供する必要があります:
PFInitialize を明示的に呼び出さない場合、PFServicesInitialize が内部でデフォルトパラメーターで呼び出します。ほとんどのタイトルではこれで問題ありません。ただし、PFMemSetFunctions を介してカスタムメモリフックを使用している場合は、PFInitialize を自分で呼び出す必要があります。そうしないと、PFServicesInitialize がメモリフックが有効になる前に Core を初期化し、SDK はデフォルトの割り当てルーチンを代わりに使用します。

ステップ 3: サービス構成の作成

PFServiceConfigCreateHandle は、対象とする PlayFab タイトルとエンドポイントを SDK に伝えるハンドルを作成します。両方の値は Game Manager で見つけることができます。
返される PFServiceConfigHandle は、後続のすべてのログイン呼び出しに必要です。

ステップ 4: PlayFab Services の初期化

PFServicesInitialize は Services レイヤー (Inventory、Leaderboards、Friends など) を Core の上に設定します。

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 のクリーンアップが完了したら、Core を解体するために PFUninitializeAsync を呼び出します:
PFInitialize を明示的に呼び出さなかった場合、PFUninitializeAsync をスキップできます。その場合、PFServicesUninitializeAsync が Core のクリーンアップを自動的に処理します。ただし、PFInitialize を自分で呼び出した場合は、PFUninitializeAsync を自分で呼び出す必要があります。

完全な例

この例は、Windows タイトルで初期化からシャットダウンまでの完全なライフサイクルを示しています:

よくある間違い

関連項目

最終更新日 2026年8月25日