反应原生服务
包装纸 大约 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分钟左右的时间内看到显示结果 .