---
title: "Sử dụng paywall dự phòng trong dự án React Native thuần"
description: "Cấu hình paywall dự phòng trong dự án React Native thuần (không dùng Expo)."
---

:::important
Hướng dẫn này áp dụng cho **dự án React Native thuần (không dùng Expo)**.
Nếu bạn đang dùng **Expo**, hãy xem [hướng dẫn fallback cho Expo](react-native-use-fallback-paywalls-expo).
:::

Để duy trì trải nghiệm người dùng mượt mà, điều quan trọng là phải thiết lập [paywall dự phòng](/fallback-paywalls) cho các flow, [paywall](paywalls) và [onboarding](onboardings) của bạn. Biện pháp phòng ngừa này giúp mở rộng khả năng của ứng dụng trong trường hợp mất kết nối internet một phần hoặc hoàn toàn.

* **Nếu ứng dụng không thể kết nối đến máy chủ Adapty:**

    Ứng dụng vẫn có thể hiển thị flow hoặc paywall dự phòng, và truy cập cấu hình onboarding đã lưu cục bộ.

* **Nếu ứng dụng không thể kết nối internet:**

    Ứng dụng vẫn có thể hiển thị flow hoặc paywall dự phòng. Onboarding chứa nội dung từ xa và cần có kết nối internet để hoạt động.

:::important
Trước khi thực hiện các bước trong hướng dẫn này, hãy [tải xuống](/local-fallback-paywalls) các file cấu hình dự phòng từ Adapty.
:::

## Cấu hình \{#configuration\}

### Android \{#android\}

1. Thêm file cấu hình dự phòng vào ứng dụng của bạn. Chọn một trong các thư mục sau:
   * **android/app/src/main/assets/**
   * **android/app/src/main/res/raw/**

      Lưu ý: Thư mục `res/raw` có quy tắc đặt tên file đặc biệt (bắt đầu bằng chữ cái, không dùng chữ hoa, không dùng ký tự đặc biệt ngoại trừ dấu gạch dưới, và không có dấu cách trong tên file).

2. Cập nhật thuộc tính `android` của hằng số `FileLocation`:
   * Nếu file nằm trong thư mục `assets`, truyền đường dẫn file tương đối so với thư mục đó.
   * Nếu file nằm trong thư mục `res/raw`, truyền tên file không kèm phần mở rộng.

### iOS \{#ios\}

1. Thêm file JSON dự phòng vào bundle dự án: mở menu **File** trong XCode và chọn tùy chọn **Add Files to "YourProjectName"**.
2. Truyền tên file cấu hình vào thuộc tính `ios` của hằng số `FileLocation`.

## Ví dụ \{#example\}

<Tabs groupId="current-os" queryString> <TabItem value="current" label="Hiện tại (v3.8+)" default>
```typescript showLineNumbers
//after v3.8
const fileLocation = {
  ios: {
    fileName: 'ios_fallback.json'
  },
  android: {
    //if the file is located in 'android/app/src/main/assets/'
    relativeAssetPath: 'android_fallback.json'
  }
}
await adapty.setFallback(fileLocation);
```
</TabItem>
<TabItem value="old" label="Cũ (trước v3.8)" default>
```typescript showLineNumbers
//Legacy (before v3.8)
const paywallsLocation = {
  ios: {
    fileName: 'ios_fallback.json'
  },
  android: {
    //if the file is located in 'android/app/src/main/assets/'
    relativeAssetPath: 'android_fallback.json'
  }
}
await adapty.setFallbackPaywalls(paywallsLocation);
```
</TabItem>
</Tabs>

Các tham số:

| Tham số            | Mô tả                                              |
| :------------------- | :------------------------------------------------------- |
| **fileLocation** | Đối tượng đại diện cho vị trí của file cấu hình dự phòng. |