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

Flutter でのペイウォール取得を信頼性の高いものにするには、3つのことを実現する必要があります：高速な表示、オーディエンスにターゲティングされたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、これを実現するためのタイミング、キャッシュ、フォールバックパターンについて説明します。
:::tip
以下のルールは、`Adapty().activate()` および `Adapty().identify()` がすでに完了していることを前提としています。詳しくは [Flutter SDK の呼び出し順序](flutter-sdk-call-order) をご覧ください。
:::

以下のアドバイスは v3 のメソッド名を使用しています。SDK v4 では、`getPaywall` が `getFlow` に、フェッチポリシーの型が `AdaptyFlowFetchPolicy` にそれぞれ名称変更されていますが、すべてのルールはそのまま適用されます。
## ルールと注意点 \{#rules-and-pitfalls\}
| すること | しないこと | 理由 |
|---|---|---|
| これから表示するプレースメントをフェッチする。                                                                                  | 起動時にすべてのプレースメントを並列でプリフェッチする。        | 一括プリフェッチはメインスレッドをブロックし、処理が集中する間にブラックスクリーンが発生する。                                  |
| アトリビューションが解決する時間を確保してから `getPaywall` をフェッチする（たとえば `activate` から 1〜2 秒後、または `didUpdateProfileStream` が発火した後）。 | `runApp` の前の `main()` で `getPaywall` を呼び出す。         | アトリビューションがまだ確定していないため、ペイウォールはデフォルトのオーディエンスで解決され、セグメントや ASA パーソナライゼーションが無効になる。 |
| `loadTimeout` を設定し、すべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。                             | `getPaywall` を無期限に待機する。                     | タイムアウトを設定しないと、通信環境が悪いユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。     |
プレースメントの選び方については[プレースメント](placements)を、`fetchPolicy`および`loadTimeout`パラメータの詳細については[ペイウォールとプロダクトの取得](fetch-paywalls-and-products-flutter)を参照してください。
## 接続状況が悪い環境向けのチューニング \{#tune-for-poor-connectivity\}

接続状況が慢性的に悪い市場（農村部、移動中、ルーティングの問題がある地域）向けには:

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