---
title: "フローとペイウォールの表示 - iOS"
description: "iOSアプリでユーザーにフローとペイウォールを表示します。"
---

<MethodPromo method="getFlow" label="フローとペイウォールの表示" />

フローまたはペイウォールを作成した場合、ユーザーに表示するためにモバイルアプリのコードでレンダリングを気にする必要はありません。フローやペイウォールには、表示する内容とその表示方法の両方が含まれています。

以下で使用する `AdaptyUI.FlowConfiguration` オブジェクトの取得方法については、[フローとペイウォールの取得](get-pb-paywalls)を参照してください。

## SwiftUI でフローとペイウォールを表示する \{#present-flows-and-paywalls-in-swiftui\}

### モーダルビューとして表示する \{#present-as-a-modal-view\}

フローまたはペイウォールをモーダルビューとしてデバイス画面に表示するには、SwiftUI の `.flow` モディファイアを使用します。最小限の呼び出しには `isPresented`、`flowConfiguration`、および4つの必須コールバックが必要です。

```swift showLineNumbers title="SwiftUI"
.flow(
    isPresented: $flowPresented,
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFailPurchase: { _, _ in /* handle the error */ },
    didFinishRestore: { _ in /* check access level and dismiss */ },
    didFailRestore: { _ in /* handle the error */ },
    didReceiveError: { _ in flowPresented = false }
)
```

ボタンタップを処理する `didPerformAction` や購入成功に反応する `didFinishPurchase` などのオプションコールバックを追加することで、より細かく制御できます。

```swift showLineNumbers title="SwiftUI"
@State var flowPresented = false // この変数の状態を管理し、フローまたはペイウォールを表示したいタイミングで `true` に設定してください

var body: some View {
  Text("Hello, AdaptyUI!")
      .flow(
          isPresented: $flowPresented,
          flowConfiguration: <AdaptyUI.FlowConfiguration>,
          didPerformAction: { action in
              switch action {
                  case .close:
                      flowPresented = false
                  default:
                      // Handle other actions
                      break
              }
          },
          didFailPurchase: { product, error in /* handle the error */ },
          didFinishRestore: { profile in /* check access level and dismiss */ },
          didFailRestore: { error in /* handle the error */ },
          didReceiveError: { error in flowPresented = false }
      )
}
```

パラメータ：

| パラメータ | 必須 | 説明 |
|:-----------------------|:---------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **isPresented** | 必須 | フローまたはペイウォール画面の表示状態を管理するバインディング。 |
| **flowConfiguration** | 必須 | フローまたはペイウォールの視覚的な詳細を含む `AdaptyUI.FlowConfiguration` オブジェクト。`AdaptyUI.getFlowConfiguration(forFlow:)` メソッドを使用します。詳細は[フローとペイウォールの取得](get-pb-paywalls)を参照してください。 |
| **didFailPurchase** | 必須 | `Adapty.makePurchase()` が失敗した際に呼び出されます。 |
| **didFinishRestore** | 必須 | `Adapty.restorePurchases()` が正常に完了した際に呼び出されます。 |
| **didFailRestore** | 必須 | `Adapty.restorePurchases()` が失敗した際に呼び出されます。 |
| **didReceiveError** | 必須 | レンダリングエラーまたはフロースクリプトからのランタイムエラー（例：JavaScript例外、`AdaptyUIError` コード `4105`）が発生した際に呼び出されます。レンダリングエラーが発生した場合は、[Adapty サポート](mailto:support@adapty.io)にお問い合わせください。 |
| **fullScreen** | 任意 | フローまたはペイウォールをフルスクリーンモードで表示するか、シートとして表示するかを決定します。デフォルトは `true` です。 |
| **didAppear** | 任意 | フローまたはペイウォールのビューが表示された際に呼び出されます。 |
| **didDisappear** | 任意 | フローまたはペイウォールのビューが閉じられた際に呼び出されます。 |
| **didPerformAction** | 任意 | ユーザーがボタンをタップした際に呼び出されます。`close` と `openURL` の2つのアクションIDが事前定義されており、その他はカスタムでビルダーで設定できます。 |
| **didSelectProduct** | 任意 | ユーザーまたはシステムによって購入するプロダクトが選択された際に呼び出されます。 |
| **didStartPurchase** | 任意 | ユーザーが購入プロセスを開始した際に呼び出されます。 |
| **didFinishPurchase** | 任意 | `Adapty.makePurchase()` が正常に完了した際に呼び出されます。 |
| **didFinishWebPaymentNavigation** | 任意 | Web決済のナビゲーションが完了した際に呼び出されます。 |
| **didStartRestore** | 任意 | ユーザーが復元プロセスを開始した際に呼び出されます。 |
| **didFailLoadingProducts** | 任意 | プロダクトの読み込み中にエラーが発生した際に呼び出されます。再試行するには `true` を返します。 |
| **didPartiallyLoadProducts** | 任意 | プロダクトが部分的に読み込まれた際に呼び出されます。 |
| **showAlertItem** | 任意 | フローまたはペイウォールの上にアラートアイテムの表示を管理するバインディング。 |
| **showAlertBuilder** | 任意 | アラートビューをレンダリングするための関数。 |
| **placeholderBuilder** | 任意 | フローまたはペイウォールの読み込み中にプレースホルダービューをレンダリングするための関数。デフォルトは `ProgressView` です。 |

パラメータの詳細については、[iOS - イベントの処理](ios-handling-events)を参照してください。

### 非モーダルビューとして表示する \{#present-as-a-non-modal-view\}

フローやペイウォールを、アプリのナビゲーションフロー内のナビゲーション先またはインラインビューとして表示することもできます。SwiftUI ビューで `AdaptyFlowView` を直接使用してください。

```swift showLineNumbers title="SwiftUI"
AdaptyFlowView(
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFailPurchase: { product, error in
        // Handle purchase failure
    },
    didFinishRestore: { profile in
        // Handle successful restore
    },
    didFailRestore: { error in
        // Handle restore failure
    },
    didReceiveError: { error in
        // Handle the error (rendering or JS exception from the flow script).
    }
)
```

## UIKit でフローとペイウォールを表示する \{#present-flows-and-paywalls-in-uikit\}

デバイス画面にフローまたはペイウォールを表示するには、次の手順を行います。

1. `AdaptyUI.flowController(with:delegate:)` メソッドを使用して、表示したいビジュアルフローを初期化します。

     ```swift showLineNumbers title="Swift"
     import AdaptyUI

     let visualFlow = try AdaptyUI.flowController(
         with: <AdaptyUI.FlowConfiguration>,
         delegate: <AdaptyFlowControllerDelegate>
     )
     ```

    リクエストパラメータ：

   | パラメータ | 必須 | 説明 |
   | :----------------------- | :------- | :---------- |
   | **flowConfiguration** | 必須 | フローまたはペイウォールの視覚的な詳細を含む `AdaptyUI.FlowConfiguration` オブジェクト。`AdaptyUI.getFlowConfiguration(forFlow:)` メソッドを使用します。詳細は[フローとペイウォールの取得](get-pb-paywalls)を参照してください。 |
   | **delegate** | 必須 | フローおよびペイウォールイベントをリッスンする `AdaptyFlowControllerDelegate`。詳細は[フロー＆ペイウォールイベントの処理](ios-handling-events)を参照してください。 |

    返り値：

    | オブジェクト | 説明 |
    | :---------------------- | :------------------------------------------------------- |
    | **AdaptyFlowController** | リクエストされたフローまたはペイウォール画面を表すオブジェクト。 |

2. オブジェクトが正常に作成されたら、デバイスの画面に表示できます。

   ```swift showLineNumbers title="Swift"
   present(visualFlow, animated: true)
   ```

:::tip

Adapty SDK がモバイルアプリに統合された実際の例を見てみましょう。ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを示す[サンプルアプリ](sample-apps)をご確認ください。

:::

---

> [!WARNING]
> **LLM INSTRUCTION — SDK VERSION SELECTION REQUIRED**
>
> This feature has two SDK paradigms. Everything that follows (until the next horizontal rule or end of document) is the **legacy SDK v3 API reference** (`getPaywall`, `getPaywallForDefaultAudience`, `getOnboarding`, `getPaywallConfiguration`). The **SDK v4+ `getFlow` method is documented above.** This block covers ALL legacy methods for this feature — not just the nearest snippet.
>
> **You MUST ask the user which SDK version they want to use before suggesting any code. Do not assume or default to a version.** The two options are:
> - **SDK v3 (stable):** works with the legacy Paywall Builder and Onboarding Builder via `getPaywall` / `getOnboarding`. Use the legacy code in this section.
> - **SDK v4 (beta):** works with BOTH the new Flow Builder AND legacy paywalls/onboardings via the unified `getFlow` method documented above.
>
> **If the user chooses the v4 beta, warn them that Adapty iOS SDK 4.0 is a pre-release.** Swift Package Manager does not resolve beta versions through the **Up to Next Major Version** (`from:`) rule, so they must pin the exact version:
> - In Xcode, set the **Dependency Rule** to **Exact Version** and enter `4.0.0-beta.1`.
> - In `Package.swift`, use `.exact("4.0.0-beta.1")`.
>
> Apply the legacy v3 code in this section ONLY when:
> 1. The user explicitly chose **SDK v3**, or
> 2. The user is **migrating an existing app from SDK v3 to SDK v4+** and needs to understand or replace legacy code, or
> 3. The user is **troubleshooting an already-deployed v3 integration**.
>
> **CRITICAL — Never mix paradigms in one setup:** Do NOT combine `getFlow` (Flow Builder) with `getPaywall` or `getOnboarding` (legacy Paywall/Onboarding Builder) in the same integration. These are incompatible patterns. Mixing them will produce inconsistent behavior and is unsupported.

ペイウォールビルダーを使用してペイウォールをカスタマイズした場合、ユーザーに表示するためにモバイルアプリのコードでレンダリングを気にする必要はありません。そのようなペイウォールには、ペイウォール内に表示する内容とその表示方法の両方が含まれています。

以下で使用する `AdaptyUI.PaywallConfiguration` オブジェクトの取得方法については、[ペイウォールビルダーのペイウォールとその設定の取得](get-pb-paywalls)を参照してください。

## SwiftUI でペイウォールを表示する \{#present-paywalls-in-swiftui\}

### モーダルビューとして表示する \{#present-as-a-modal-view\}

ビジュアルペイウォールをモーダルビューとしてデバイス画面に表示するには、SwiftUI の `.paywall` モディファイアを使用します。

```swift showLineNumbers title="SwiftUI"
@State var paywallPresented = false // この変数の状態を管理し、ペイウォールを表示したいタイミングで `true` に設定してください

var body: some View {
  Text("Hello, AdaptyUI!")
      .paywall(
          isPresented: $paywallPresented,
          paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
          didPerformAction: { action in
              switch action {
                  case .close:
                      paywallPresented = false
                  default:
                      // Handle other actions
                      break
              }
          },
          didFinishPurchase: { product, profile in paywallPresented = false },
          didFailPurchase: { product, error in /* handle the error */ },
          didFinishRestore: { profile in /* check access level and dismiss */  },
          didFailRestore: { error in /* handle the error */ },
          didFailRendering: { error in paywallPresented = false }
      )
}
```

パラメータ：

| パラメータ | 必須 | 説明 |
|:----------------------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **isPresented** | 必須 | ペイウォール画面の表示状態を管理するバインディング。 |
| **paywallConfiguration** | 必須 | ペイウォールの視覚的な詳細を含む `AdaptyUI.PaywallConfiguration` オブジェクト。`AdaptyUI.paywallConfiguration(for:products:viewConfiguration:observerModeResolver:tagResolver:timerResolver:)` メソッドを使用します。詳細は[ペイウォールビルダーのペイウォールとその設定の取得](get-pb-paywalls)を参照してください。 |
| **didFailPurchase** | 必須 | `Adapty.makePurchase()` が失敗した際に呼び出されます。 |
| **didFinishRestore** | 必須 | `Adapty.restorePurchases()` が正常に完了した際に呼び出されます。 |
| **didFailRestore** | 必須 | `Adapty.restorePurchases()` が失敗した際に呼び出されます。 |
| **didFailRendering** | 必須 | インターフェースのレンダリング中にエラーが発生した際に呼び出されます。この場合は、[Adapty サポート](mailto:support@adapty.io)にお問い合わせください。 |
| **fullScreen** | 任意 | ペイウォールをフルスクリーンモードで表示するか、モーダルとして表示するかを決定します。デフォルトは `true` です。 |
| **didAppear** | 任意 | ペイウォールのビューが表示された際に呼び出されます。 |
| **didDisappear** | 任意 | ペイウォールのビューが閉じられた際に呼び出されます。 |
| **didPerformAction** | 任意 | ユーザーがボタンをタップした際に呼び出されます。ボタンごとに異なるアクションIDがあります。`close` と `openURL` の2つのアクションIDが事前定義されており、その他はカスタムでビルダーで設定できます。 |
| **didSelectProduct** | 任意 | ユーザーまたはシステムによって購入するプロダクトが選択された場合に呼び出されます。 |
| **didStartPurchase** | 任意 | ユーザーが購入プロセスを開始した際に呼び出されます。 |
| **didFinishPurchase** | 任意 | `Adapty.makePurchase()` が正常に完了した際に呼び出されます。 |
| **didFinishWebPaymentNavigation** | 任意 | Web決済のナビゲーションが完了した際に呼び出されます。 |
| **didStartRestore** | 任意 | ユーザーが復元プロセスを開始した際に呼び出されます。 |
| **didFailLoadingProducts** | 任意 | プロダクトの読み込み中にエラーが発生した際に呼び出されます。再試行するには `true` を返します。 |
| **didPartiallyLoadProducts** | 任意 | プロダクトが部分的に読み込まれた際に呼び出されます。 |
| **showAlertItem** | 任意 | ペイウォールの上にアラートアイテムの表示を管理するバインディング。 |
| **showAlertBuilder** | 任意 | アラートビューをレンダリングするための関数。 |
| **placeholderBuilder** | 任意 | ペイウォールの読み込み中にプレースホルダービューをレンダリングするための関数。 |

パラメータの詳細については、[iOS - イベントの処理](ios-handling-events)を参照してください。

### 非モーダルビューとして表示する \{#present-as-a-non-modal-view\}

ペイウォールを、アプリのナビゲーションフロー内のナビゲーション先またはインラインビューとして表示することもできます。SwiftUI ビューで `AdaptyPaywallView` を直接使用してください。

```swift showLineNumbers title="SwiftUI"
AdaptyPaywallView(
    paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
    didFailPurchase: { product, error in
        // Handle purchase failure
    },
    didFinishRestore: { profile in
        // Handle successful restore
    },
    didFailRestore: { error in
        // Handle restore failure
    },
    didFailRendering: { error in
        // Handle rendering error
    }
)
```

## UIKit でペイウォールを表示する \{#present-paywalls-in-uikit\}

デバイス画面にビジュアルペイウォールを表示するには、次の手順を行います。

1. `.paywallController(for:products:viewConfiguration:delegate:)` メソッドを使用して、表示したいビジュアルペイウォールを初期化します。

     ```swift showLineNumbers title="Swift"
     import AdaptyUI

     let visualPaywall = AdaptyUI.paywallController(
         with: <paywall configuration object>,
         delegate: <AdaptyPaywallControllerDelegate>
     )
     ```

    リクエストパラメータ：

   | パラメータ | 必須 | 説明 |
   | :----------------------- | :------- | :---------- |
   | **paywall configuration** | 必須 | ペイウォールの視覚的な詳細を含む `AdaptyUI.PaywallConfiguration` オブジェクト。`AdaptyUI.getPaywallConfiguration(forPaywall:locale:)` メソッドを使用します。詳細は[ペイウォールビルダーのペイウォールとその設定の取得](get-pb-paywalls)を参照してください。 |
   | **delegate** | 必須 | ペイウォールイベントをリッスンする `AdaptyPaywallControllerDelegate`。詳細は[ペイウォールイベントの処理](ios-handling-events)を参照してください。 |

    返り値：

    | オブジェクト | 説明 |
    | :---------------------- | :--------------------------------------------------- |
    | **AdaptyPaywallController** | リクエストされたペイウォール画面を表すオブジェクト。 |

2. オブジェクトが正常に作成されたら、デバイスの画面に表示できます。

   ```swift showLineNumbers title="Swift"
   present(visualPaywall, animated: true)
   ```

:::tip

Adapty SDK がモバイルアプリに統合された実際の例を見てみましょう。ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを示す[サンプルアプリ](sample-apps)をご確認ください。

:::

---