@approov/approov-service-react-native

中文文档
3.5.18发布于 2026/10/06MITTypeScriptCommonJS零依赖近 30 天下载 3872

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

中文使用文档
文档目录7 节
  1. 目录
  2. 添加近似依赖
  3. 说明/项目变化
  4. 初始化软件
  5. 使用缩写
  6. 检查它有用
  7. 下一步

反应原生服务

React Native Android iOS npm Approov SDK Message Signing CI

包装纸 大约 SDK ,以便在使用 React Native 使用 API 调用 fetch() 或类似。 为了使用这个,你需要审判或付费 大约 账户.

目录

添加近似依赖

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

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

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

用于博览会项目:

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

说明/项目变化

对于iOS,您必须安装 舱位 依赖性。 更改为 ios 目录并运行 :

pod install

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

初始化软件

导入服务层 :

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

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

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

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 运行 在此之前 初始化,所以它从列表中设置的任何东西都丢失了. 见 配置由初始化重置数字 :

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 查询和突变像其他请求一样受到保护 。 见 用户。 。 。 .

支助 n- fatch- blob (韩语) 网络堆栈通过 @approov/rn-fetch-blob (英语) 分叉 :

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 过滤器 adb logcat | grep ApproovService在iOS上,请使用 控制台 用于连接模拟器或设备的应用程序和搜索 ApproovService。 。 。 .

您在登入的电子邮件中应当包含链接 活度量图。在您使用 Approov 集成程序运行您的应用程序后, 您应该在1分钟左右的时间内看到显示结果 .

下一步

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

版本与发布记录

@approov/approov-service-react-native 共发布 19 个版本,首次发布于 2024/08/30;过去 12 个月发布了 16 个版本。

版本发布日期距今
3.5.18latest2026/10/061 个月前
3.5.172026/08/272 个月前
3.5.162026/08/142 个月前
3.5.152026/07/093 个月前
3.5.142026/06/104 个月前
3.5.132026/05/056 个月前

关于 @approov/approov-service-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 和提交记录判断。