---
title: "iOS SDKでペイウォールのフェッチを最適化する"
description: "AdaptyのペイウォールをiOSで確実にフェッチする：タイミング、キャッシュ、フォールバックのパターン。"
---

iOSで信頼性の高いペイウォールフェッチを実現するには、3つの要件を満たす必要があります。高速なレンダリング、オーディエンスターゲットに合ったペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、それを実現するためのタイミング、キャッシュ、フォールバックのパターンを説明します。

:::tip
以下のルールは、`Adapty.activate()` と `Adapty.identify()` がすでに解決済みであることを前提としています。[iOS SDKのコール順序](ios-sdk-call-order)を参照してください。
:::

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

| 推奨事項 | 避けるべき事項 | 理由 |
|---|---|---|
| 表示しようとしているプレースメントをフェッチする。 | 起動時にすべてのプレースメントを並列でプリフェッチする。 | 一括プリフェッチはメインスレッドをブロックし、バースト中に画面が真っ暗になる。 |
| アトリビューションが解決される時間を確保してから `getPaywall` をフェッチする（例：`activate` から1〜2秒後、または `onProfileUpdate` が発火した後）。 | `App.init()` で `getPaywall` を呼び出す。 | アトリビューションがまだ取得されていない。ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントやASAパーソナライゼーションが静かにバイパスされる。 |
| `loadTimeout` を設定し、すべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。 | `getPaywall` を無期限に待機する。 | タイムアウトなしでは、接続が悪いユーザーはネットワークが解決するまで空白の画面を見続けるか、アプリを閉じてしまう。 |

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

## 接続が悪い環境向けの調整 \{#tune-for-poor-connectivity\}

接続が安定しない市場（農村部、移動中、ルーティングの問題が多い地域）向けには：

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