# @approov/approov-service-react-native 中文文档

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

版本：3\.5\.18
npm 元数据更新时间：2026-10-05T19:36:25.811Z
中文译文更新时间：2026-11-06T12:22:51.310Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：1.1 MB，104 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \>=19\.0\.0，react-native \>=0\.76\.0
- 首次发布：2024-08-30T11:49:00.524Z
- 最新版本发布：2026-10-05T19:36:25.596Z
- 近 30 天下载量：3872（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 16 个）

## 中文简介

对应的 Approov 移动应用程序保护

## 安装

```sh
npm install @approov/approov-service-react-native
```

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

## README

# 反应原生服务

![React Native](https://img.shields.io/badge/React%20Native-0.76%2B-61DAFB?logo=react&logoColor=white) ![Android](https://img.shields.io/badge/Android-minSdk%2025-3DDC84?logo=android&logoColor=white) ![iOS](https://img.shields.io/badge/iOS-11.0%2B-000000?logo=apple&logoColor=white) ![npm](https://img.shields.io/npm/v/%40approov%2Fapproov-service-react-native?logo=npm&color=CB3837) ![Approov SDK](https://img.shields.io/badge/Approov%20SDK-3.5.3-0055CC) ![Message Signing](https://img.shields.io/badge/Message%20Signing-RFC%209421-6A1B9A) ![CI](https://github.com/approov/approov-service-react-native/actions/workflows/build_and_test.yml/badge.svg)

包装纸 [大约 SDK](https://github.com/approov/approov-ios-sdk) ,以便在使用 [`React Native`](https://reactnative.dev/) 使用 API 调用 `fetch()` 或类似。 为了使用这个,你需要审判或付费 [大约](https://www.approov.io/) 账户.

## 目录

-   [添加近似依赖](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-adding-the-approov-dependency)
-   [说明/项目变化](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-manifest--project-changes)
-   [初始化软件](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-initializing-approov)
-   [使用缩写](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-using-approov)
-   [检查它有用](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-checking-it-works)
-   [下一步](https://npmcn.com/package/%40approov/approov-service-react-native/#readme-next-steps)

## 添加近似依赖

将 Approov 服务层添加到您现有的应用中 :

```shell
npm install @approov/approov-service-react-native
```

如果您遇到与端点依赖关系有关的错误, 附加 `--force` 以您特定的 React 本地版本安装。 该插件支持版本为0.76或以上.

用于博览会项目:

```shell
expo install @approov/approov-service-react-native
```

## 说明/项目变化

对于iOS,您必须安装 [舱位](https://cocoapods.org/) 依赖性。 更改为 `ios` 目录并运行 :

```shell
pod install
```

不用担心这是否会产生重复UUID的警告 .

## 初始化软件

导入服务层 :

```javascript
import { ApproovProvider, ApproovService } from '@approov/approov-service-react-native';
```

**您必须等待成功完成 `ApproovService.initialize(config)` 在发出任何保护请求前, 使用您有效的配置 .** 打开每个保护请求路径, 包括背景任务和启动效果, Android和iOS不再等待在它们的请求截取器内被初始化;在初始化之前发送的请求可以进行无防护. 如果初始化失败, 请继续屏蔽保护请求 。 不要依赖启动延迟或投票 `isInitialized()` 作为等待初始化承诺的替代.

启动时明确初始化,并在应用程序日志中保留关联性 ID :

```javascript
const approovSessionId = global.crypto?.randomUUID?.() || `${Date.now()}-${Math.random()}`;

async function initializeApproov() {
  try {
    await ApproovService.initialize('<enter-your-config-string-here>');

    const enabled = await ApproovService.isApproovEnabled();
    if (enabled) {
      const deviceId = await ApproovService.getDeviceID();
      console.log('Approov initialized', { approovSessionId, deviceId });
    } else {
      throw new Error('Approov protection is not enabled');
    }
  } catch (error) {
    console.error('Approov initialization failed; protected requests remain blocked', {
      approovSessionId,
      error,
    });
    throw error;
  }
}

async function startProtectedRequests() {
  await initializeApproov();
  // Start protected requests only after the await above succeeds.
}
```

如果您更喜欢组件被包装的启动, 请用 `ApproovProvider`。同样的初始化要求也适用:受保护的请求必须被屏蔽,直到初始化成功完成,包括从提供者子女之外启动的请求。 初始化重排符号、绑定和替换标题、排除正则exs和任何服务变异符,所以应用其中的 `onInitialized`,在每次成功初始化之后和之前运行 `approovReady` 成为事实. `onInit` 运行 _在此之前_ 初始化,所以它从列表中设置的任何东西都丢失了. 见 [配置由初始化重置](https://npmcn.com/package/%40approov/approov-service-react-native/USAGE.md#configuration-is-reset-by-initialization)数字 :

```javascript
const approovConfiguration = () => {
  ApproovService.setBindingHeader('Authorization');
};

return (
  <ApproovProvider config="<enter-your-config-string-here>" onInitialized={approovConfiguration}>
    <View>
      <Button onPress={callAPI} title="Press Me!" />
    </View>
  </ApproovProvider>
);
```

配置字符串在您正在登入的电子邮件中提供 .

## 使用缩写

在Android上,令牌处理使用应用程序截取器,证书打针使用网络截取器. 客户端共享服务的平针状态:初始化在它的承诺解决前会加载平针,而SDK配置更新则会为现有的客户端刷新这一状态. 创建客户端不会获取指针 。 初始的 SDK 接取针仍能阻挡初始化. approov pins取代了客户端的内置平接政策;客户平接不合并. 每一次HTTPS网络交换都对照信任管理器所核查的证书链来检查当前接针,包括再利用连接的交换;这些检查不会从SDK取出接针.

一旦初始化成功,网络请求可能具有Approov令牌,消息签名,动态接针,或者应用了安全替换. 最初您不会设定要保护的 API 域名, 因此请求不变, 但服务会联系 Approov 云和日志 `UNKNOWN_URL` (Android)或 (英语) `unknown URL` (iOS) (中文(简体) ).

**WebSockets 不支持 .** 一个WebSocket连接,包括一个上传的GraphQL订阅,在没有Approov令牌,安全字符串替换或信件签名的情况下通过,Approov不将其钉入. 只保护带有 Approov 的 HTTPS 请求; 通过 HTTPS 发送的 GraphQL 查询和突变像其他请求一样受到保护 。 见 [用户](https://npmcn.com/package/%40approov/approov-service-react-native/USAGE.md#websockets-are-not-supported)。 。 。 .

支助 [n- fatch- blob (韩语)](https://github.com/joltup/rn-fetch-blob) 网络堆栈通过 [@approov/rn-fetch-blob (英语)](https://www.npmjs.com/package/@approov/rn-fetch-blob) 分叉 :

```shell
npm uninstall rn-fetch-blob
npm install @approov/rn-fetch-blob
```

## 检查它有用

你可以用这个 `ApproovMonitor` 组件,也从 `@approov/approov-service-react-native`内部 `ApproovProvider`。此输出控制了初始化状态的日志.

在初始推出期间和每当添加可观察性SDK时,抓取 `ApproovService.getPinningDiagnostics()` 应用程序日志中的元数据 :

-   **机器人:** 在第一个受保护的请求前立即获取元数据并进行校验 `isInterceptorPresent` 财务报告和审定财务报表 `isPinnerPresent`。如果其中之一为 `false`电话 `ApproovService.updateClientFactory(true)` 开始之前.
-   **iOS: (英语)** 在第一个受保护的请求后立即获取元数据并检查 `sessionsWithoutPinning` 财务报告和审定财务报表 `unpinnedSessions`这有助于发现代表冲突,跳过会话,以及早期开发和进行中缺失的校正.

安卓上,请使用 [`logcat`](https://developer.android.com/studio/command-line/logcat) 过滤器 `adb logcat | grep ApproovService`在iOS上,请使用 [控制台](https://support.apple.com/en-gb/guide/console/welcome/mac) 用于连接模拟器或设备的应用程序和搜索 `ApproovService`。 。 。 .

您在登入的电子邮件中应当包含链接 [活度量图](https://approov.io/docs/latest/approov-usage-documentation/#metrics-graphs)。在您使用 Approov 集成程序运行您的应用程序后, 您应该在1分钟左右的时间内看到显示结果 .

## 下一步

-   读取 [四、建 议](https://npmcn.com/package/%40approov/approov-service-react-native/ARCHITECTURE.md) iOS和Android上的服务层网络拦截设计、种族条件、第三方SDK的干扰以及 `fetchWithApproov` 备选案文.
-   读取 [用户](https://npmcn.com/package/%40approov/approov-service-react-native/USAGE.md) 对于信件签名,符号装订,自定义网络变异器,API保护和秘密保护的详细指示.
-   读取 [参考文献.md](https://npmcn.com/package/%40approov/approov-service-react-native/REFERENCE.md) 用于完全反射原生 `ApproovService` 接口.
-   读取 [难题. md](https://npmcn.com/package/%40approov/approov-service-react-native/TROUBLESHOOTING.md) 用于特定平台的设置和运行时间诊断.
-   见 [快速启动](https://github.com/approov/quickstart-react-native) 工作整合的样本应用程序.

## 常见问题

### @approov/approov-service-react-native 是什么？

对应的 Approov 移动应用程序保护

### 如何安装 @approov/approov-service-react-native？

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

### @approov/approov-service-react-native 支持 TypeScript 吗？

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

### @approov/approov-service-react-native 支持 ESM 还是 CommonJS？

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

### @approov/approov-service-react-native 可以商用吗？

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

### @approov/approov-service-react-native 的下载量有多少？

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

### @approov/approov-service-react-native 还在维护吗？

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

