---
title: "Phản hồi hành động button trong Capacitor SDK"
description: "Xử lý hành động button trên paywall trong Capacitor bằng Adapty để tối ưu hóa việc kiếm tiền từ ứng dụng."
---

Nếu bạn đang xây dựng paywall bằng Adapty Paywall Builder, việc thiết lập button đúng cách là rất quan trọng:

1. Thêm một [button trong paywall builder](paywall-buttons) và gán cho nó một hành động có sẵn hoặc tạo một ID hành động tùy chỉnh.
2. Viết code trong ứng dụng để xử lý từng hành động bạn đã gán.

Hướng dẫn này trình bày cách xử lý các hành động tùy chỉnh và hành động có sẵn trong code của bạn.

## Đóng paywall \{#close-paywalls\}

Để thêm một button đóng paywall:

1. Trong paywall builder, thêm một button và gán cho nó hành động **Close**.
2. Trong code ứng dụng, triển khai handler cho hành động `close` để đóng paywall.

:::info
Trong Capacitor SDK, hành động `close` mặc định sẽ kích hoạt việc đóng paywall. Tuy nhiên, bạn có thể ghi đè hành vi này trong code nếu cần. Ví dụ, đóng một paywall có thể kích hoạt mở một paywall khác.
:::

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCloseButtonPress() {
    console.log('User closed paywall');
    return true; // Allow the paywall to close
  }
});
```

## Mở URL từ paywall \{#open-urls-from-paywalls\}

:::tip
Nếu bạn muốn thêm một nhóm liên kết (ví dụ: điều khoản sử dụng và khôi phục giao dịch mua), hãy thêm phần tử **Link** trong paywall builder và xử lý nó theo cách tương tự như button với hành động **Open URL**.
:::

Để thêm một button mở liên kết từ paywall của bạn (ví dụ: **Terms of use** hoặc **Privacy policy**):

1. Trong paywall builder, thêm một button, gán cho nó hành động **Open URL**, và nhập URL bạn muốn mở.
2. Trong code ứng dụng, triển khai handler cho hành động `openUrl` để mở URL nhận được trong trình duyệt.

:::info
Trong Capacitor SDK, hành động `window.open` mặc định sẽ kích hoạt mở URL. Tuy nhiên, bạn có thể ghi đè hành vi này trong code nếu cần.
:::

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onUrlPress(url) {
    window.open(url, '_blank');
    return false; // Don't close the paywall
  },
});
```

## Đăng nhập vào ứng dụng \{#log-into-the-app\}

Để thêm một button cho phép người dùng đăng nhập vào ứng dụng:

1. Trong paywall builder, thêm một button và gán cho nó hành động **Login**.
2. Trong code ứng dụng, triển khai handler cho hành động `login` để xác định người dùng.

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'login') {
      // Navigate to login screen
      console.log('User requested login');
    }
  }
});
```

## Xử lý hành động tùy chỉnh \{#handle-custom-actions\}

Để thêm một button xử lý các hành động khác:

1. Trong paywall builder, thêm một button, gán cho nó hành động **Custom**, và đặt ID cho nó.
2. Trong code ứng dụng, triển khai handler cho ID hành động bạn đã tạo.

Ví dụ, nếu bạn có một bộ ưu đãi gói đăng ký khác hoặc sản phẩm mua một lần, bạn có thể thêm một button để hiển thị paywall khác:

```typescript showLineNumbers
const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'openNewPaywall') {
      // Display another paywall
      console.log('User requested new paywall');
    }
  },
});
```