# @clickterm/react-native-sdk 中文文档

规范地址：https://npmcn.com/package/%40clickterm/react-native-sdk/

版本：1\.5\.0
npm 元数据更新时间：2026-10-23T06:51:25.414Z
中文译文更新时间：2026-11-10T01:40:29.566Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40clickterm/react-native-sdk
原文对照：https://npmcn.com/package/%40clickterm/react-native-sdk/?lang=original
项目主页：https://github.com/telq/clickterm-react-native-sdk#readme
源码仓库：https://github.com/telq/clickterm-react-native-sdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：68.8 kB，32 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：expo \*，react \*，react-native \*
- 首次发布：2026-05-28T09:49:50.669Z
- 最新版本发布：2026-10-23T06:51:25.184Z
- 近 30 天下载量：4430（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

反应原生 SDK 用于 Clickterm 点击包协议 .

## 安装

```sh
npm install @clickterm/react-native-sdk
```

也可以使用：`pnpm add @clickterm/react-native-sdk`、`yarn add @clickterm/react-native-sdk`、`bun add @clickterm/react-native-sdk`

## README

# @ 点击term/ react- native- sdk

反应原生 SDK 用于 [点击时间](https://clickterm.com/) 点击包装协议 。 它通过将原生的iOS和Android Clickterm SDKs包装为博览会模块——不需要自定义的原生桥来在"赤裸回放"和"博览会"应用程序中呈现出原生的点击包对话框.

## 所需资源

-   原生反应 `0.75+` 或 曝光 SDK `52+`
-   iOS系统 `15.0+`
-   机器人 `minSdk 24`

## 安装

```sh
npm install @clickterm/react-native-sdk
```

### iOS系统

安装 CocoaPods 依赖关系( bare React End) :

```sh
cd ios && pod install
```

展览项目在期间自动取取模块 `npx expo prebuild` 或EAS Build. (英语). 在此步骤下为您下载本地的iOS框架——不需要手动设置.

### 机器人

本地的依赖性由马文中央自动解决. 博览 预建也启用了Android API 24所需的核心图书馆解析器 和25通过软件包的配置插件.

对于一个不运行配置插件的赤裸回放本地应用程序,请添加 跟随应用模块 `android/app/build.gradle`数字 :

```gradle
android {
  compileOptions {
    coreLibraryDesugaringEnabled true
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
}
```

### 博览配置插件

在您的应用程序中添加软件包 `plugins` 阵列, 因此 Expo CLI 和 EAS Build 包含在预建过程中 :

```jsonc
// app.json
{
  "expo": {
    "plugins": ["@clickterm/react-native-sdk"]
  }
}
```

## 使用量

```ts
import * as Clickterm from '@clickterm/react-native-sdk';

await Clickterm.initialize('YOUR_APP_ID');

const signature = await Clickterm.show({
  clickwrapTemplateId: 'tmpl_abc',
  endUserId: 'user_42',
   templatePlaceholders: {
    fullName: 'Ada Lovelace',
    company: 'Analytical Engines Ltd',
    customPlaceholders: { customerName: 'Ada' },
  },
  language: 'en-US',
});

const bundleSignature = await Clickterm.showBundle({
  clickwrapBundleId: 'bundle_abc',
  endUserId: 'user_42',
  templatePlaceholdersByTemplateId: {
    tmpl_abc: {
      fullName: 'Ada Lovelace',
      company: 'Analytical Engines Ltd',
    },
  },
  language: 'en-US',
});

const accepted = await Clickterm.showAcceptedContent({
  clickwrapTemplateId: 'tmpl_abc',
  endUserId: 'user_42',
});
```

## API 密码

| 函数 | 回返 | 说明 |
| --- | --- | --- |
| `initialize(appId, environment?)` | `Promise<void>` | 配置 SDK . `environment` 实值 `'production'` (违约)或 `'development'` 看到了吗 [平台差异](https://npmcn.com/package/%40clickterm/react-native-sdk/#readme-platform-differences)。 。 。 . |
| `show(request)` | `Promise<string | null>` | 显示点击窗口对话框 。 决定与签名字符串,或 `null` 如果用户已经对协议采取行动. |
| `showBundle(request)` | `Promise<string | null>` | 呈现一个捆绑的对话框 。 以捆绑的签名决定,或 `null` 当每个项目都被接受时. |
| `showAcceptedContent(request)` | `Promise<ClickwrapTemplateContent>` | 重新显示先前接受的协议并用其存储的内容解决. |

请求形状( 装有包的完整类型脚本定义船):

-   `ClickwrapTemplateRequest` —— 说 `{ clickwrapTemplateId, endUserId, templatePlaceholders?, language }`
-   `ClickwrapBundleRequest` —— 说 `{ clickwrapBundleId, endUserId, templatePlaceholdersByTemplateId?, language? }`
-   `ClickwrapAcceptedAgreementRequest` —— 说 `{ clickwrapTemplateId, endUserId }`

`showBundle()` 当本地对话框在装入或提交错误后提供重试时, 将待决 。 它解决流量成功或捆绑已被接受时,拒绝用户取消或流量以终端出错结束时.

### 错误

所有方法都用 `Error` 谁 `code` 属性为:

| 代码 | 含义 |
| --- | --- |
| `ERR_CLICKTERM_NOT_INITIALIZED` | `initialize()` 并非首先被称作. |
| `ERR_CLICKTERM_INVALID_ARGUMENT` | 一个必要的论据是缺失或畸形. |
| `ERR_CLICKTERM_NETWORK` | 请求无法到达服务器 . |
| `ERR_CLICKTERM_HTTP` | 服务器以错误状态响应 . |
| `ERR_CLICKTERM_DECODING` | 无法解析服务器响应 . |
| `ERR_CLICKTERM_USER_CANCELLED` | 用户解除了对话框 . |
| `ERR_CLICKTERM_NO_PRESENTER` | iOS:没有可供显示的视图控制器 . |
| `ERR_CLICKTERM_NO_ACTIVITY` | 安卓:没有前景活动. |
| `ERR_CLICKTERM_UNKNOWN` | 发生了出乎意料的错误 . |

## 许可证

麻省理工学院

## 文件收发者

通过可选 `ddRecipient` (单位:千美元)`email`选项 `fullName`)带有模板或捆绑请求. 这与文件占位符不同。 一个捆绑对整个传送邮件使用一个收件人. 启用 ClickTerm 中的协议电子邮件发送 。 丢失或无效的电子邮件地址产生跳过交付; 占位符电子邮件从未被用作倒计时。 电子邮件支持最多254个字符和完整 名称最多为100个.

```ts
const ddRecipient = { email: 'delivery@example.com', fullName: 'Alice Example' };
await show({ clickwrapTemplateId: 'template', endUserId: 'user', ddRecipient });
await showBundle({ clickwrapBundleId: 'bundle', endUserId: 'user', ddRecipient });
```

核查使用随请求而提供的接收方;核查不能添加、替换或清除. 不发送 `ddRecipient` 在验证。 校验属于您的后端; React 原生 SDK 永远不会 发送后端证书或呼叫验证 . 反应原生包装目前并不暴露被推迟的身份或激活. 它的接收者是供应的 只使用普通模板或捆绑请求.

## 常见问题

### @clickterm/react-native-sdk 是什么？

反应原生 SDK 用于 Clickterm 点击包协议 \.

### 如何安装 @clickterm/react-native-sdk？

在项目目录运行 npm install @clickterm/react-native-sdk，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：expo（\*）、react（\*）、react-native（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @clickterm/react-native-sdk 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @clickterm/react-native-sdk 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @clickterm/react-native-sdk 可以商用吗？

@clickterm/react-native-sdk 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @clickterm/react-native-sdk 的下载量有多少？

根据 npm 官方下载统计，@clickterm/react-native-sdk 在 2026/10/10 – 2026/11/08 这 30 天内被下载 4,430 次，日均约 148 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @clickterm/react-native-sdk 还在维护吗？

最新版本 1\.5\.0 发布于 2026/10/23（17 天前）；至今共发布 13 个版本，其中过去 12 个月发布了 13 个；首次发布于 2026/05/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

