初期化シーケンス
初期化には 4 つのステップがあります。最初はオプションで、残りの 3 つは必須です。ステップ 1: カスタムメモリフックの設定 (オプション)
タイトルがカスタムメモリアロケーターを使用する場合、他の PlayFab API の前に PFMemSetFunctions を呼び出します。これにより、すべての SDK メモリ割り当てが独自のalloc および free コールバックを経由するようになります。
PFMemSetFunctions は PFInitialize の前に呼び出す必要があります。フックが設定された後に再度呼び出すことはできません。
ステップ 2: PlayFab Core の初期化
PFInitialize は、HTTP レイヤーとバックグラウンドタスクキューを含む SDK のグローバル状態を設定します。正確なシグネチャはプラットフォームによって異なります。Windows、Linux、iOS、および macOS
nullptr を渡します。
Android
Android では、SDK が libHttpClient を初期化できるように、Java VM とアプリケーションコンテキストも提供する必要があります:PFInitialize を明示的に呼び出さない場合、PFServicesInitialize が内部でデフォルトパラメーターで呼び出します。ほとんどのタイトルではこれで問題ありません。ただし、PFMemSetFunctions を介してカスタムメモリフックを使用している場合は、PFInitialize を自分で呼び出す必要があります。そうしないと、PFServicesInitialize がメモリフックが有効になる前に Core を初期化し、SDK はデフォルトの割り当てルーチンを代わりに使用します。
ステップ 3: サービス構成の作成
PFServiceConfigCreateHandle は、対象とする PlayFab タイトルとエンドポイントを SDK に伝えるハンドルを作成します。両方の値は Game Manager で見つけることができます。ステップ 4: PlayFab Services の初期化
PFServicesInitialize は Services レイヤー (Inventory、Leaderboards、Friends など) を Core の上に設定します。Windows、Linux、iOS、および macOS
nullptr を渡してください。
Android
Android では、Java VM とアプリケーションコンテキストを含む HCInitArgs 構造体を渡します:PFServiceConfigHandle のライフサイクル
PFServiceConfigHandle は参照カウントされたハンドルです。SDK は参照カウントによって内部の寿命を管理しますが、所有するすべてのハンドルを閉じる責任があります。ハンドルの複製
独自の寿命を管理するコンポーネント間でサービス構成を共有する必要がある場合は、PFServiceConfigDuplicateHandle を使用します:シャットダウンシーケンス
シャットダウンは初期化の逆です。Core の前に Services を非初期化する必要があり、両方の呼び出しは非同期です。ステップ 1: すべての開いているハンドルを閉じる
SDK を解体する前に、所有するすべての PFEntityHandle と PFServiceConfigHandle を閉じます:ステップ 2: Services の非初期化
PFServicesUninitializeAsync は Services レイヤーを解体します。続行する前に完了を待ちます。ステップ 3: Core の非初期化
Services のクリーンアップが完了したら、Core を解体するために PFUninitializeAsync を呼び出します:PFInitialize を明示的に呼び出さなかった場合、PFUninitializeAsync をスキップできます。その場合、PFServicesUninitializeAsync が Core のクリーンアップを自動的に処理します。ただし、PFInitialize を自分で呼び出した場合は、PFUninitializeAsync を自分で呼び出す必要があります。
