---
title: "Unity SDKでのペイウォール取得を最適化する"
description: "Adaptyのペイウォールを確実に取得する: Unityにおけるタイミングとキャッシュおよびフォールバックのパターン。"
---

Unity でペイウォールを確実に取得するには、次の3つが必要です: 高速な表示、オーディエンスにターゲティングされたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバック。以下のルールでは、そのためのタイミング、キャッシュ、フォールバックのパターンについて説明します。

:::tip
これらのルールは、`Adapty.Activate()` と `Adapty.Identify()` がすでに解決済みであることを前提としています。詳細は [Unity SDK のコール順序](unity-sdk-call-order) を参照してください。
:::

## ルールと注意点 \{#rules-and-pitfalls\}

| このようにする | このようにしない | 理由 |
|---|---|---|
| 表示しようとしているプレースメントを取得する。                                                                                  | 起動時にすべてのプレースメントを並行してプリフェッチする。        | 一括プリフェッチはメインスレッドをブロックし、バースト中にブラックスクリーンが発生する。                                  |
| アトリビューションが解決する時間を確保した後で `GetPaywall` を取得する（例: `Activate` から 1〜2 秒後、または `OnLoadLatestProfile` が発火した後）。 | `Awake()` で `GetPaywall` を呼び出す。                        | アトリビューションがまだ到達していない。ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントや ASA パーソナライゼーションがサイレントにバイパスされる。 |
| `loadTimeout` を設定し、すべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。                             | `GetPaywall` を無期限に待機する。                     | タイムアウトを設定しない場合、接続品質の低いユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。     |

`fetchPolicy` と `loadTimeout` パラメータのリファレンスは [ペイウォールとプロダクトの取得](fetch-paywalls-and-products-unity) を参照してください。また、適切なプレースメントの選び方は [プレースメント](placements) を参照してください。

## 接続が不安定な環境向けの調整 \{#tune-for-poor-connectivity\}

接続品質が一貫して低い市場（農村部、交通機関内、ルーティングの影響を受ける地域）向け:

- 最初のフェッチ以外のすべてのフェッチで `fetchPolicy` を `AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad` に設定する。
- Adapty ダッシュボードですべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。
- `loadTimeout` を 3〜5 秒に設定し、タイムアウト発生時はフォールバックを受け入れる。
- ペイウォールの表示を `GetProfile` に依存させない。`GetPaywall` を独立して呼び出すことで、プロファイルの取得が遅くても UI がブロックされないようにする。