---
title: "Observerモードでフローを表示する - Unity"
description: "UnityアプリのObserverモードでフローおよびペイウォールビルダーのペイウォールを表示し、独自のコードで購入処理を行います。"
---

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

:::warning
このセクションは[オブザーバーモード](observer-vs-full-mode)のみを対象としています。オブザーバーモードで作業していない場合は、[フローとペイウォールの表示](unity-present-paywalls)のトピックを参照してください。
:::

:::info
この機能はAdapty Unity SDK 4.0（ベータ版）以降が必要です。以前はネイティブのiOSおよびAndroid SDKでのみ利用可能でした。アップグレードするには[移行ガイド](migration-to-unity-sdk-v4)を参照してください。
:::

<details>
   <summary>フローの表示を開始する前に（クリックして展開）</summary>

1. Adapty を [App Store と連携](initial_ios)し、[Google Play とも連携](initial-android)する初期設定を行います。
   2. Adapty SDK をインストールして設定します。設定ビルダーで必ず `SetObserverMode(true)` を呼び出してください。[Unity SDK インストールガイド](sdk-installation-unity#activate-adapty-module-of-adapty-sdk)を参照してください。
   3. Adapty ダッシュボードで[プロダクトを作成](create-product)します。
   4. [ビルダーでフローまたはペイウォールを設定](create-paywall)し、プロダクトを割り当てます。
   5. [プレースメントを作成し、フローまたはペイウォールを割り当てます](create-placement)。
   6. モバイルアプリのコードで[フローとその設定を取得](unity-get-pb-paywalls)します。

</details>

オブザーバーモードでは、SDKが代わりに購入処理を行うことはありません。ユーザーがAdaptyでレンダリングされたフローやペイウォール上の購入ボタンまたは復元ボタンをタップすると、SDKはあなたの `IAdaptyUIObserverModeResolver` を呼び出します。そこで独自のコードを使って購入または復元を実行してください。

1. `IAdaptyUIObserverModeResolver` インターフェースを実装します：

   ```csharp showLineNumbers
   using System;
   using AdaptySDK;

   public class MyObserverModeResolver : IAdaptyUIObserverModeResolver
   {
       public void FlowViewDidInitiatePurchase(
           AdaptyUIFlowView view,
           AdaptyPaywallProduct product,
           Action onStartPurchase,
           Action onFinishPurchase
       )
       {
           onStartPurchase(); // the view shows its loading indicator
           // make the purchase with your own code,
           // then report the transaction to Adapty and call:
           onFinishPurchase(); // the view hides the loading indicator
       }

       public void FlowViewDidInitiateRestore(
           AdaptyUIFlowView view,
           Action onStartRestore,
           Action onFinishRestore
       )
       {
           onStartRestore();
           // restore purchases with your own code, then:
           onFinishRestore();
       }
   }
   ```

`FlowViewDidInitiatePurchase` メソッドはユーザーが購入を開始したことを通知し、`FlowViewDidInitiateRestore` はユーザーがリストアを開始したことを通知します。これに応じてカスタムの購入またはリストアフローをトリガーしてください。

また、購入またはリストアの処理について AdaptyUI に通知するために、以下のコールバックを必ず呼び出してください。これはローダーの表示など、フローの適切な動作に必要です。

| コールバック       | 説明                                                                             |
   | :----------------- | :------------------------------------------------------------------------------- |
   | onStartPurchase()  | 購入が開始されたことを AdaptyUI に通知するために呼び出すコールバックです。       |
   | onFinishPurchase() | 購入が完了したことを AdaptyUI に通知するために呼び出すコールバックです。         |
   | onStartRestore()   | リストアが開始されたことを AdaptyUI に通知するために呼び出すコールバックです。   |
   | onFinishRestore()  | リストアが完了したことを AdaptyUI に通知するために呼び出すコールバックです。     |

フローはコードの実行中も開いたままです。購入またはリストアが成功した後は、自分でフローを閉じてください。

2. 画面を表示する前にリゾルバーを登録してください：

   ```csharp showLineNumbers
   Adapty.SetObserverModeResolver(new MyObserverModeResolver());
   ```

   リゾルバーが登録されていない場合、フロービューはコードに購入を引き渡す方法がないため、ユーザーが購入ボタンをタップしても何も起こりません。

3. 通常通りフロービューを作成して表示します。[フローを取得してビューを作成](unity-get-pb-paywalls)し、[表示](unity-present-paywalls)します。追加パラメータは不要です。リゾルバが登録されると、Adapty がレンダリングするすべてのフローやペイウォールの購入・復元がそのリゾルバを経由します。

:::warning
必ず[トランザクションをレポートし、ペイウォールに紐付けて](report-transactions-observer-mode-unity)ください。これを行わないと、Adapty はトランザクションを認識できず、購入元のペイウォールを特定できません。
:::