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

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

:::tip
以下のルールは、`Adapty.activate()` および `Adapty.identify()` がすでに解決済みであることを前提としています。詳細は [Kotlin Multiplatform SDK の呼び出し順序](kmp-sdk-call-order) を参照してください。
:::

以下のアドバイスでは v3 のメソッド名を使用しています。SDK v4 では `getPaywall` が `getFlow` に名称変更されていますが（[移行ガイド](migration-to-kmp-sdk-v4) を参照）、すべてのルールはそのまま適用されます。

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

| こうする | こうしない | 理由 |
|---|---|---|
| 表示しようとしているプレースメントだけ取得する。                                                                                                                | 起動時にすべてのプレースメントを一括プリフェッチする。        | 一括プリフェッチはメインスレッドをブロックし、バースト中にブラックスクリーンが発生する。                                                  |
| アトリビューションが解決する時間を確保してから `getPaywall` を取得する（例：`activate` の 1〜2 秒後、または `setOnProfileUpdatedListener` が発火した後）。 | アプリ起動時に `getPaywall` を呼び出す。                       | アトリビューションがまだ反映されていないため、ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントや ASA のパーソナライズが暗黙的にスキップされる。 |
| `loadTimeout` を設定し、すべてのプレースメントに[フォールバックペイウォール](fallback-paywalls)を設定する。                                                           | `getPaywall` を無期限に待ち続ける。                     | タイムアウトがないと、通信状況の悪いユーザーはネットワークが解決するまで白紙の画面を見続けるか、アプリを閉じてしまう。     |

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

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

接続が継続的に不安定な市場（農村地帯、交通機関、ルーティングの影響を受ける地域）向け:

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