---
title: "在纯 React Native 项目中使用备用付费墙"
description: "在纯 React Native（非 Expo）项目中配置备用付费墙。"
---

为了保持流畅的用户体验，请务必为您的流程、[付费墙](paywalls)和[用户引导](onboardings)设置[备用方案](/fallback-paywalls)。这一预防措施可以在网络部分或完全中断时，确保应用仍能正常运行。

* **若应用无法访问 Adapty 服务器：**

    应用可以显示备用流程或付费墙，并读取本地的用户引导配置。

* **若应用无法访问互联网：**

    应用可以显示备用流程或付费墙。用户引导包含远程内容，需要联网才能正常使用。

:::important
在按照本指南操作之前，请先从 Adapty [下载](/local-fallback-paywalls)备用配置文件。
:::

## 下载备用付费墙文件 \{#download-fallback-paywalls\}

在 Adapty 看板中，打开 **Paywalls** 页面，选择你想配置备用付费墙的付费墙，然后点击 **Download fallback** 按钮下载文件。

有关在看板中下载备用付费墙文件的详细说明，请参阅[下载备用付费墙](https://adapty.io/docs/zh/fallback-paywalls#download-fallback-paywalls)。

## 将备用付费墙文件添加至项目 \{#add-fallback-paywalls-to-project\}

<Tabs>
<TabItem value="iOS" label="iOS">

1. 在 Xcode 中打开你的项目。
2. 将下载的 `.json` 文件拖拽到项目导航器中，放置在合适的位置（建议放在资源目录下）。
3. 在弹出的对话框中，确保勾选了 **Copy items if needed**，然后点击 **Finish**。

</TabItem>
<TabItem value="Android" label="Android">

1. 将下载的 `.json` 文件放置在 `android/app/src/main/assets/` 目录下（如果该目录不存在，请先创建）。

</TabItem>
</Tabs>

## 设置备用付费墙 \{#set-fallback-paywalls\}

调用 `setFallbackPaywalls` 方法，将备用付费墙文件路径或内容传入。该方法应在初始化 Adapty SDK 之后尽早调用。

<Tabs>
<TabItem value="iOS" label="iOS">

```typescript
await adapty.setFallbackPaywalls('<path_to_fallback_paywalls_file>');
```

</TabItem>
<TabItem value="Android" label="Android">

```typescript
await adapty.setFallbackPaywalls('<path_to_fallback_paywalls_file>');
```

</TabItem>
</Tabs>

| 参数 | 类型 | 说明 |
|---|---|---|
| `paywalls` | `String` | 备用付费墙 JSON 文件的路径或内容。 |
:::important
本指南适用于**纯 React Native（非 Expo）项目**。
如果你使用的是 **Expo**，请参阅 [Expo 备用付费墙指南](react-native-use-fallback-paywalls-expo)。
:::

为了保持流畅的用户体验，请务必为您的流程、[付费墙](paywalls)和[用户引导](onboardings)设置[备用方案](/fallback-paywalls)。这一预防措施可以在网络部分或完全中断时，确保应用仍能正常运行。

* **若应用无法访问 Adapty 服务器：**

    应用可以显示备用流程或付费墙，并读取本地的用户引导配置。

* **若应用无法访问互联网：**

    应用可以显示备用流程或付费墙。用户引导包含远程内容，需要联网才能正常使用。

:::important
在按照本指南操作之前，请先从 Adapty [下载](/local-fallback-paywalls)备用配置文件。
:::
## 配置 \{#configuration\}
### Android

1. 将备用配置文件添加到您的应用程序中。选择以下目录之一：
   * **android/app/src/main/assets/**
   * **android/app/src/main/res/raw/**

      注意：`res/raw` 文件夹有特殊的文件命名规范（必须以字母开头，不能使用大写字母，不能使用下划线以外的特殊字符，文件名中不能有空格）。
2. 更新 `FileLocation` 常量的 `android` 属性：
   * 如果文件位于 `assets` 目录下，传入文件相对于该目录的路径。
   * 如果文件位于 `res/raw` 目录下，传入不含扩展名的文件名。
### iOS

1. 将备用 JSON 文件添加到项目包中：在 XCode 中打开 **File** 菜单，选择 **Add Files to "YourProjectName"** 选项。
2. 将配置文件的名称传递给 `FileLocation` 常量的 `ios` 属性。
## 示例 \{#example\}
<Tabs groupId="current-os" queryString> <TabItem value="current" label="当前版本 (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="旧版本 (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>
| 参数 | 描述 |
| :------------------- | :------------------------------------------------------- |
| **fileLocation** | 表示备用配置文件位置的对象。 |