---
title: "Hiển thị flow trong Observer mode - Unity"
description: "Hiển thị flow và paywall Paywall Builder trong Observer mode trong ứng dụng Unity của bạn trong khi xử lý giao dịch mua bằng code của riêng bạn."
---

Nếu bạn đã tùy chỉnh một flow hoặc paywall bằng builder, bạn không cần lo lắng về việc render nó trong code ứng dụng di động để hiển thị cho người dùng. Một flow hoặc paywall như vậy đã chứa cả nội dung cần hiển thị lẫn cách thức hiển thị.

:::warning
Phần này chỉ áp dụng cho [chế độ Observer](observer-vs-full-mode). Nếu bạn không làm việc ở chế độ Observer, hãy xem chủ đề [Hiển thị flow & paywall](unity-present-paywalls).
:::

:::info
Tính năng này yêu cầu Adapty Unity SDK 4.0 (beta) trở lên — trước đây nó chỉ khả dụng trong các SDK iOS và Android gốc. Xem [hướng dẫn migration](migration-to-unity-sdk-v4) để nâng cấp.
:::

<details>
   <summary>Trước khi bắt đầu hiển thị flow (Nhấn để mở rộng)</summary>

1. Thiết lập tích hợp ban đầu của Adapty [với App Store](initial_ios) và [với Google Play](initial-android).
   2. Cài đặt và cấu hình Adapty SDK. Đảm bảo gọi `SetObserverMode(true)` trên configuration builder. Tham khảo [hướng dẫn cài đặt Unity SDK](sdk-installation-unity#activate-adapty-module-of-adapty-sdk).
   3. [Tạo sản phẩm](create-product) trong Adapty Dashboard.
   4. [Cấu hình flow hoặc paywall trong các builder](create-paywall) và gán sản phẩm vào chúng.
   5. [Tạo placement và gán flow hoặc paywall vào chúng](create-placement).
   6. [Lấy flow và cấu hình của chúng](unity-get-pb-paywalls) trong code ứng dụng di động của bạn.

</details>

Trong chế độ Observer, SDK không thực hiện mua hàng thay bạn. Khi người dùng nhấn nút mua hàng hoặc khôi phục trong một flow hoặc paywall do Adapty render, SDK sẽ gọi `IAdaptyUIObserverModeResolver` của bạn — hãy thực hiện việc mua hàng hoặc khôi phục bằng code của chính bạn ở đó.

1. Implement interface `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` thông báo rằng người dùng đã bắt đầu thanh toán, còn `FlowViewDidInitiateRestore` — rằng người dùng đã bắt đầu khôi phục. Hãy kích hoạt flow thanh toán hoặc khôi phục tùy chỉnh của bạn để phản hồi.

   Ngoài ra, nhớ gọi các callback sau để thông báo cho AdaptyUI về quá trình thanh toán hoặc khôi phục. Điều này cần thiết để flow hoạt động đúng, chẳng hạn như hiển thị loader và các thứ khác:

| Callback           | Description                                                                      |
   | :----------------- | :------------------------------------------------------------------------------- |
   | onStartPurchase()  | Callback cần được gọi để thông báo cho AdaptyUI rằng quá trình mua đã bắt đầu.  |
   | onFinishPurchase() | Callback cần được gọi để thông báo cho AdaptyUI rằng quá trình mua đã hoàn tất. |
   | onStartRestore()   | Callback cần được gọi để thông báo cho AdaptyUI rằng quá trình khôi phục đã bắt đầu.   |
   | onFinishRestore()  | Callback cần được gọi để thông báo cho AdaptyUI rằng quá trình khôi phục đã hoàn tất.  |

Flow sẽ giữ nguyên trong khi code của bạn chạy — hãy tự đóng nó lại sau khi mua hàng hoặc khôi phục thành công.

2. Đăng ký resolver trước khi hiển thị bất kỳ màn hình nào:

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

   Nếu không có resolver được đăng ký, flow view không có cách nào chuyển giao việc mua hàng cho code của bạn, và không có gì xảy ra khi người dùng nhấn nút mua.

3. Tạo và hiển thị flow view như bình thường: [lấy flow và tạo view của nó](unity-get-pb-paywalls), sau đó [hiển thị nó](unity-present-paywalls). Không cần thêm tham số nào — một khi resolver đã được đăng ký, mọi flow hoặc paywall do Adapty render đều sẽ định tuyến các lần mua và khôi phục qua nó.

:::warning
Đừng quên [báo cáo giao dịch và liên kết nó với paywall](report-transactions-observer-mode-unity). Nếu không, Adapty sẽ không nhận ra giao dịch và sẽ không xác định được paywall nguồn của lần mua đó.
:::