接続モード
クラウド接続モード
ネットワークが利用可能でPFGameSaveFilesAddUserWithUiAsync() が正常に完了すると、システムはクラウド接続モードで動作します。このモードでは:
- すべての API がクラウド同期を完全に伴って正常に機能します
- セーブ データのアップロードは期待どおりに動作します
- ストレージ クォータの情報が利用可能です
- アクティブ デバイスの監視が正しく機能します
オフライン モード (クラウドに未接続)
ネットワークが利用できないか、ユーザーがオフラインでプレイすることを選択した場合、システムは限られた機能でオフライン モードに入ります。PFGameSaveFilesIsConnectedToCloud() を使用して現在の接続状態を確認し、システムがどのモードで動作しているかを判断できます。
初期同期中のネットワーク障害の処理
PFGameSaveFilesAddUserWithUiAsync() がネットワーク接続なしで呼び出されると、PFGameSaveFilesUiSyncFailedCallback がトリガーされます。システムがユーザーの応答を待つ間、XAsyncBlock コールバックは発火しません。ユーザーが終端アクションを選択するまで、非同期操作は一時停止されます。
- Try Again (
Retry): ネットワーク呼び出しを再試行します。再試行も失敗した場合、このコールバックが再度発火し、ユーザーが再度応答する必要があります。XAsyncBlockコールバックは、各再試行ループを通じて延期されたままです。 - Use Offline (
UseOffline):XAsyncBlockコールバックがS_OKで発火しますが、システムはオフライン モードに入ります (PFGameSaveFilesIsConnectedToCloud()で検出できます)。 - Cancel:
XAsyncBlockコールバックがE_PF_GAMESAVE_USER_CANCELLEDで発火します。
オフライン モードでの API 動作
オフライン モードでは、API は異なる動作をします。通常に動作する API
PFGameSaveFilesGetFolder()- ローカル セーブ フォルダー パスを返します
機能が制限される API
PFGameSaveFilesUploadWithUiAsync()- すぐにS_OKを返しますが、非同期の完了はE_PF_GAMESAVE_DISCONNECTED_FROM_CLOUDを返しますPFGameSaveFilesGetRemainingQuota()-E_PF_GAMESAVE_DISCONNECTED_FROM_CLOUDを返しますPFGameSaveFilesSetActiveDeviceChangedCallback()- 設定できますがトリガーされることはありません
オンライン モードに戻る
- 再接続を試みるために
PFGameSaveFilesAddUserWithUiAsync()を再度呼び出します - Game Saves システムを完全に再初期化する必要はありません
- ネットワークがまだ利用できない場合、再度失敗 UI が表示されます
- 再試行後に接続状態を検証するには
PFGameSaveFilesIsConnectedToCloud()を使用します
その他の接続状態シナリオ
PFGameSaveFilesIsConnectedToCloud() API は特に有用です。切断は複数の方法で発生する可能性があるためです。
- 同期中のネットワーク利用不可: ユーザーが明示的にオフラインでのプレイを選択する
- アクティブ デバイスが変更された: 別のデバイスがアクティブ デバイスとして引き継ぎ、このデバイスは自動的にオフライン モードになる
オフライン サポートのベスト プラクティス
- ネットワークの問題を優雅に処理するために 常に同期失敗コールバックを実装 する
- クラウド操作を試みる前に
PFGameSaveFilesIsConnectedToCloud()を使用して 定期的に接続状態を確認 する - セーブが同期されないことをプレイヤーが理解できるように、オフライン モードで動作しているときに プレイヤーに通知 する
- ネットワーク接続が復元されたときに 再試行オプションを提供 する
- ローカル セーブは常に機能する - プレイヤーはネットワーク状態に関係なくプレイを続けることができる
- 切断を監視する - 別のデバイスがアクティブになるとデバイスが切断される可能性があることを覚えておく
接続モードでのアップロード動作
接続モードでも、ネットワークの問題やレート制限によってアップロードが失敗する場合があります。この場合、XAsyncBlock コールバックはすぐには発火しません。システムが UI コールバック ステート マシン を通じてユーザーの応答を待つ間、非同期操作は一時停止されます。
- エラーの詳細と共に
PFGameSaveFilesUiSyncFailedCallbackが発火します。 XAsyncBlockコールバックはまだ発火しません。システムが応答を待つ間、操作が一時停止されます。- ユーザーが
Retryを選択すると、アップロードが再試行されます。再度失敗すると、コールバックが再度発火し、ユーザーが再度応答する必要があります。 - ユーザーが
Cancelを選択すると、XAsyncBlockコールバックがE_PF_GAMESAVE_USER_CANCELLEDで発火します。 - 再試行が成功すると、
XAsyncBlockコールバックがS_OKで発火します。
PFGameSaveFilesUploadWithUiAsync() を再度呼び出すことができます。