---
title: "旧版安装指南"
description: "React Native Adapty SDK 的旧版安装指南。"
---

Adapty 包含两个关键 SDK，用于无缝集成到您的移动应用中：

- 核心 **AdaptySDK**：这是 Adapty 在您的应用中正常运行所必需的基础 SDK。
- **AdaptyUI SDK**：如果您使用 Adapty 付费墙编辑工具，则需要此可选 SDK。付费墙编辑工具是一款用户友好的无代码工具，可轻松创建跨平台付费墙。这些付费墙在我们看板的可视化构建器中构建，完全在设备上以原生方式运行，只需极少的工作即可创建出色的内容。

您目前需要 `react-native-adapty` 2.4.7 或更高版本才能使用 UI SDK。

请参考下方的兼容性表格，选择正确的 Adapty SDK 和 AdaptyUI SDK 组合。

| Adapty SDK 版本 | AdaptyUI 版本 |
| :-------------- | :------------ |
| 2.7.0 – 2.9.2   | 2.0.0 - 2.0.1 |
| 2.9.3 - 2.9.8   | 2.1.0         |
| 2.10.0          | 2.1.1         |
| 2.10.1          | 2.1.2         |
| 2.11.2          | 2.11.0        |
| 2.11.3          | 2.11.1        |
| 3.0.1           | 3.0.0-3.0.1   |
| 3.1.0           | 3.1.0         |

:::danger
发布应用前请完成发布检查清单

在发布应用之前，请务必仔细阅读[发布检查清单](release-checklist)。该清单确保您已完成所有必要步骤，并提供评估集成成功与否的标准。
:::

## 安装 Adapty SDK \{#install-adapty-sdks\}

目前，React Native 提供两种开发路径：Expo 和纯 React Native。Adapty 可与两者无缝集成。请参阅下方与您所选配置相匹配的部分。

### 为 Expo React Native 安装 Adapty SDK \{#install-adapty-sdks-for-expo-react-native\}

您可以使用 Expo Application Services（EAS）简化开发流程。虽然配置可能因您的设置而有所不同，但以下是最常见且最简单的配置方式：

1. 如果您尚未安装 EAS 命令行界面（CLI），可以使用以下命令进行安装：

   ```sh showLineNumbers title="Shell"
   npm install -g eas-cli
   ```

2. 在项目根目录中，安装 dev client 以创建开发构建：

   ```sh showLineNumbers title="Shell"
   expo install expo-dev-client
   ```

3. 运行安装命令：

   ```sh showLineNumbers title="Shell"
   expo install react-native-adapty
   expo install @adapty/react-native-ui
   ```

4. 针对 iOS：使用 EAS CLI 创建 iOS 构建。此命令可能会提示您提供其他信息。您可以参阅 [Expo 官方文档](https://docs.expo.dev/develop/development-builds/create-a-build/) 了解更多详情：

   ```sh showLineNumbers title="Shell"
   eas build --profile development --platform ios
   ```

4. 针对 Android：使用 EAS CLI 创建 Android 构建。此命令可能会提示您提供其他信息。您可以参阅 [Expo 官方文档](https://docs.expo.dev/develop/development-builds/create-a-build/) 了解更多详情：

   ```sh showLineNumbers title="Shell"
   eas build --profile development --platform android
   ```

5. 使用以下命令启动开发服务器：

   ```sh showLineNumbers title="Shell"
   expo start --dev-client
   ```

完成以上步骤后，应用将可以正常运行并集成 react-native-adapty。

可能出现的错误：

| 错误 | 描述 |
|-----|-----------|
| `Failed to start (Invariant Violation: Native module cannot be null)` | <p>如果您通过 CLI dev client 扫描二维码，可能会遇到此错误。要解决此问题，您可以尝试以下方法：</p><p></p><p>> 在您的设备上打开 EAS 构建的应用（应显示某个 Expo 屏幕），然后手动输入 Expo 提供的 URL（见下方截图）。您可以使用 JS 函数 `unescape("string")` 对 URL 中的特殊字符进行转义，结果应类似于 `http://192.168.1.35:8081`</p> |

### 使用纯 React Native 安装 Adapty SDK \{#install-adapty-sdks-with-pure-react-native\}

如果您选择使用纯原生方式管理 React Native 内购，请参阅以下说明：

1. 在您的项目中，运行安装命令：

   ```sh showLineNumbers title="Shell"
   yarn add react-native-adapty
   yarn add @adapty/react-native-ui
   ```

2. 针对 iOS：安装所需的 pods：

   ```sh showLineNumbers title="Shell"
   pod install --project-directory=ios
   pod install --project-directory=ios/
   ```

   最低支持的 iOS 版本为 13.0，但[新版付费墙编辑工具](adapty-paywall-builder)需要 iOS 15.0 或更高版本。

   如果在安装 pod 时遇到错误，请在您的 `ios/Podfile` 中找到以下行并更新最低目标版本。之后，您应该可以顺利运行 `pod install`。

   ```diff showLineNumbers title="Podfile"
   -platform :ios, min_ios_version_supported
   +platform :ios, 15.0
   ```

2. 针对 Android：更新 `/android/build.gradle` 文件。确保存在 `kotlin-gradle-plugin:1.8.0` 依赖项或更新版本：

   ```groovy showLineNumbers title="/android/build.gradle"
   ...
   buildscript {
     ...
     dependencies {
       ...
       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
     }
   }
   ...
   ```

## 配置 Adapty SDK \{#configure-adapty-sdks\}

要使用 Adapty SDK，请在您的_核心组件_（如 `App.tsx`）中导入 `adapty` 并调用 `activate`。建议将激活代码置于 React 组件之前，以确保在激活之前不会调用其他 Adapty 方法。

  ```typescript showLineNumbers title="/src/App.tsx"
  import { adapty, LogLevel } from 'react-native-adapty';

  adapty.activate('PUBLIC_SDK_KEY', {
    observerMode: false,
    customerUserId: 'YOUR_USER_ID',
    logLevel: LogLevel.ERROR,
    __debugDeferActivation: false,
    ipAddressCollectionDisabled: false,
    ios: {
      idfaCollectionDisabled: false,
    },
    activateUi: true, // NOT necessary as the default value is `true`, but you can pass `false` if you don't use the Paywall Builder
    mediaCache: {
      memoryStorageTotalCostLimit: 100 * 1024 * 1024, // 100MB
      memoryStorageCountLimit: 2147483647, // 2^31 - 1
      diskStorageSizeLimit: 100 * 1024 * 1024, // 100MB
    },
  });

  const App = () => {
  	// ...
  }
  ```

激活参数：

| 参数 | 是否必填 | 描述 |
|---------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| apiKey | 必填 | <p>公共 SDK 密钥是将 Adapty 集成到您的移动应用中所使用的唯一标识符。您可以在 Adapty 看板中复制它：[**App settings** -> **General** 标签 -> **API Keys** 部分](https://app.adapty.io/settings/general)。</p><p>**SDK 密钥**对每个应用都是唯一的，因此如果您有多个应用，请确保选择正确的一个。</p><p>请确保在 Adapty 初始化时使用**公共 SDK 密钥**，因为**密钥**仅用于[服务端 API](getting-started-with-server-side-api)。</p> |
| observerMode | 可选 | <p>一个布尔值，用于控制[观察者模式](observer-vs-full-mode)。如果您自己处理购买和订阅状态，并使用 Adapty 发送订阅事件和分析数据，请开启此选项。默认值为 `false`。</p><p></p><p>🚧 在观察者模式下运行时，Adapty SDK 不会关闭任何交易，请确保您自行处理。</p> |
| customerUserId | 可选 | <p>您系统中的用户标识符。我们会将其与订阅和分析事件一起发送，以便将事件与正确的用户画像匹配。您也可以在[用户画像](profiles-crm)部分使用 `customerUserId` 查找客户。</p><p></p><p>如果您在开始使用 Adapty 时没有用户 ID，可以稍后使用 `adapty.identify()` 方法添加。有关更多详情，请参阅[识别用户](react-native-identifying-users)部分。</p> |
| logLevel | 可选 | 一个字符串参数，使 Adapty 记录错误和其他重要信息，以帮助您了解发生了什么。 |
| \_\_debugDeferActivation | 可选 | 一个布尔参数，允许您延迟 SDK 激活，直到下次调用 Adapty。此参数仅用于开发目的，**不应在生产环境中使用**。 |
| ipAddressCollectionDisabled | 可选 | <p>设置为 `true` 以禁用用户 IP 地址的收集和共享。</p><p>默认值为 `false`。</p><p>有关 IDFA 收集的更多详情，请参阅[分析集成](analytics-integration#disable-collection-of-advertising-identifiers)部分。</p> |
| idfaCollectionDisabled | 可选 | 一个布尔参数，允许您为 iOS 应用禁用 IDFA 收集。默认值为 `false`。有关更多详情，请参阅[分析集成](analytics-integration#disable-collection-of-advertising-identifiers)部分。 |

请注意，为了在您的移动应用中显示付费墙和产品，以及使分析功能正常工作，您需要展示付费墙，并且如果您使用的付费墙不是通过付费墙编辑工具创建的，还需要在应用内[处理购买流程](making-purchases)。