---
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>

在 Observer 模式下，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 将无法识别该交易，也无法确定购买来源的付费墙。
:::