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

React Nativeでペイウォールを確実に取得するには、高速なレンダリング、オーディエンスターゲティングが適用されたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックという3つの要件を満たす必要があります。以下のルールでは、それを実現するためのタイミング、キャッシュ、フォールバックのパターンを説明します。

:::tip
これらのルールは、`adapty.activate()` と `adapty.identify()` がすでに解決済みであることを前提としています。詳しくは[React Native SDKのコール順序](react-native-sdk-call-order)をご覧ください。
:::

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

| 推奨する方法 | 避けるべき方法 | 理由 |
|---|---|---|
| 表示しようとしているプレースメントのみを取得する。                                                                                  | 起動時にすべてのプレースメントを並列で事前取得する。        | 一括事前取得はJSスレッドをブロックし、バーストの間にブラックスクリーンが発生する。                                  |
| アトリビューションが解決される機会があった後に `getPaywall` を取得する — たとえば、`activate` の1〜2秒後、または `onProfileUpdate` が発火した後。 | ルートコンポーネントのマウント時に `getPaywall` を呼び出す。 | アトリビューションがまだ適用されていない。ペイウォールがデフォルトのオーディエンスに対して解決され、セグメントやASAのパーソナライゼーションが無効になる。 |
| `loadTimeoutMs` を設定し、すべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。                             | `getPaywall` を無期限に待機する。                     | タイムアウトなしでは、接続状況が悪いユーザーはネットワークが解決されるまで空白の画面を見続けるか、アプリを閉じてしまう。     |

`fetchPolicy` と `loadTimeoutMs` パラメーターのリファレンスは[ペイウォールとプロダクトの取得](fetch-paywalls-and-products-react-native)を、適切なプレースメントの選択は[プレースメント](placements)をご覧ください。

## 接続状況が悪い場合のチューニング \{#tune-for-poor-connectivity\}

接続状況が継続的に悪い市場（農村部、乗り物での移動中、ルーティングの影響を受ける地域）向けには：

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