@ bitdrift/ react- native (英语)
react 原生的比特干ft集成
安装
npm install @bitdrift/react-native
使用量
博览
如果您正在使用 Expo 来构建您的 React 本地应用程序, 并且不想使用被弹出的工作流程, 您可以使用 @bitdrift/react-native 要初始化的软件包
在不同日志级别获取库和日志信息 。 请注意,这比理想的要晚于初始化了库,但仍应提供使用Capture的大部分好处.
import {
init,
trace,
debug,
info,
warn,
error,
isTracingActive,
setEntityId,
clearEntityId,
startSpan,
SpanResult,
SessionStrategy,
} from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity, {
startResult: (result) => {
console.log('Capture start result', result);
},
crashReporting: {
enableNativeFatalIssues: true, // Enable native crash reporting (crashes, ANRs, etc.)
UNSTABLE_enableJsErrors: true, // Enable JavaScript error reporting (fatal and non-fatal)
UNSTABLE_onBeforeReportSend: (report) => {
// Add your custom handling for report metadata.
// Available fields: report.reportType, report.sessionId, report.details, report.reason, report.fields
},
},
});
info('Hello, World!');
setEntityId('user-123');
console.log('Tracing active?', isTracingActive());
clearEntityId();
const span = startSpan('loading_profile', 'info', { source: 'tap' });
// ... perform the work ...
span?.end(SpanResult.SUCCESS, { cached: false });
对于所有博览会的用法,请确保添加 @bitdrift/react-native 页:1 plugins 字段中 app.json 文档。 这有助于确保正确设置本地模块.
{
"expo": {
"plugins": [
"@bitdrift/react-native"
]
}
}
仅限Android的WebView仪器注释 :
UNSTABLE_webViewInstrumentation目前只影响Android应用构建.- 在这个软件包中,自动设置只通过Expo配置插件/生成Android Gradle设置提供.
- 非Expo Android 应用程序仍然可以通过应用 Gradle 插件和配置
bitdrift仪表挡. - 它不影响iOS构建.
- 它不会自动配置非 Expo / 香草 React 原生Android 项目 .
博览去
由于装入本地模块 @bitdrift/react-native 在 Expo Go 中不支持软件包.
反应原生/ 退出的博览会
使用每个平台找到的指令初始化 Capture 库 这里。 。 。 .
对于iOS,在 didFinishLaunchingWithOptions 在你身边 AppDelegate.m 文档.
-
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[CAPLogger startWithAPIKey:@"<api key>" sessionStrategy: CAPSessionStrategy.fixed]];
...
对于Android,在 onCreate 在你身边 MainApplication.kt 文档.
override fun onCreate() {
super.onCreate()
Capture.Logger.start(
apiKey = "<api key>",
sessionStrategy = SessionStrategy.Fixed()
)
...
}
要从您的 React Introduct app 添加自定义日志消息, 请从 导入日志级别函数 @bitdrift/react-native 软件包,并用它们记录所需日志级别的信息.
西班牙语
使用相匹配的起始和结束事件来测量操作 . startSpan 返回时 null
直到捕获被初始化。 结束每个起始间隔一次; 重复 end 电话被忽略.
import { startSpan, SpanResult } from '@bitdrift/react-native';
const parent = startSpan('load_profile', 'info', { profileId: '123' });
const child = startSpan('fetch_profile', 'debug', undefined, undefined, parent?.id);
// ... perform the request ...
child?.end(SpanResult.SUCCESS, { cacheHit: false });
parent?.end(SpanResult.SUCCESS);
startTimeMs 财务报告和审定财务报表 endTimeMs 是以毫秒计的可选 Unix 时间戳。 如果使用其中之一,
提供两者,这样Capture就可以计算和正确定位跨度.
配置选项
崩溃报告
这个 crashReporting 选项允许您配置崩溃和错误报告行为 :
init('<api key>', SessionStrategy.Activity, {
crashReporting: {
enableNativeFatalIssues: true, // Enable native crash reporting (crashes, ANRs, etc.)
UNSTABLE_enableJsErrors: true, // Enable JavaScript error reporting (fatal and non-fatal)
UNSTABLE_onBeforeReportSend: (report) => {
// Add your custom handling for report metadata.
// Available fields: report.reportType, report.sessionId, report.details, report.reason, report.fields
},
}
});
enableNativeFatalIssues: 当true,可以报告本地致命问题,包括坠机、ANRs(应用不回应)和其他重大错误。 默认为true。 。 。 .UNSTABLE_enableJsErrors: 当true,允许通过 React Native 的全球错误处理器来报告 JavaScript 错误(无论是致命的还是非致命的). 抓取无处理的有堆积痕迹的例外. 这个特征是实验性的,在未来的释放中可能会有变化. 默认为false。 。 。 .UNSTABLE_onBeforeReportSend:在发送问题报告前打电话。 接收{ reportType, reason, details, sessionId, fields }。 。 。 .
上一个运行信息
使用 getPreviousRunInfo() 检查上一个应用程序运行是否以致命终止而结束.
import {
getPreviousRunInfo,
init,
SessionStrategy,
type PreviousRunInfo,
} from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity);
const previousRunInfo: PreviousRunInfo = getPreviousRunInfo();
if (previousRunInfo?.hasFatallyTerminated) {
console.log('Previous run terminated fatally', previousRunInfo.terminationReason);
}
PreviousRunInfo 形状 :
type PreviousRunInfo = {
hasFatallyTerminated: boolean;
terminationReason?: string;
} | null;
- 此 API 是同步的 .
- 以后再打给你
init(...)。 。 。 . - Android:在API 30+(Android 11+)上可用;返回
null在旧版本. - iOS 模拟器: 返回
null; 使用物理设备进行验证. terminationReason目前在Android上有人居住. iOS 目前提供hasFatallyTerminated。 。 。 .
SDK 状态
使用 getSdkStatus() 以检查 SDK 当前初始化状态和最近的后端活动.
import { getSdkStatus, init, SessionStrategy, type SdkStatus } from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity);
const sdkStatus: SdkStatus = getSdkStatus();
console.log(sdkStatus.initializationState);
SdkStatus 形状 :
type SdkStatus = {
initializationState: 'notStarted' | 'loaded' | 'running' | 'disabled';
lastHandshakeTimeMs?: number;
lastConfigDeliveryTimeMs?: number;
};
- 此 API 是同步的 .
- 它可以叫在之前或之后
init(...)。 。 。 . - 当捕获尚未开始时,
initializationState实值notStarted。 。 。 .
启动结果调回
使用 startResult 以观察本地 SDK 启动是否成功.
import { init, SessionStrategy } from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity, {
startResult: (result) => {
if (result.success) {
console.log('Capture started successfully');
} else {
console.log('Capture failed to start', result.error);
}
},
});
StartResult 形状 :
type StartResult = {
success: boolean;
error?: string;
};
- 每一次最多引用一次回调
init(...)电话. - 这种回调是实验性的,可能会改变.
import { trace, debug, info, warn, error } from '@bitdrift/react-native';
// Log at the desired log level using the different log level functions.
trace('Hello, World!');
debug('Hello, World!');
info('Hello, World!');
warn('Hello, World!');
error('Hello, World!');
// Optionally pass an Error object to automatically capture error details
try {
// some code that might throw
} catch (err) {
error('Failed to process request', err);
// Or with additional fields
error('Failed to process request', err, { userId: '123' });
}
特性旗跟踪
跟踪特性旗曝光以了解用户看到哪些变种:
import { setFeatureFlagExposure } from '@bitdrift/react-native';
// Track string variant
setFeatureFlagExposure('dark_mode', 'enabled');
setFeatureFlagExposure('new_ui', 'variant_b');
// Track boolean variant
setFeatureFlagExposure('experimental_feature', true);
setFeatureFlagExposure('beta_mode', false);
实体识别
设置后端关联的实体标识符与设备标识符。 该值被散列储存,准确值从未被坚持.
import { clearEntityId, setEntityId } from '@bitdrift/react-native';
setEntityId('user-123');
setEntityId('account-456');
clearEntityId();
追踪状态
使用 isTracingActive() 以同步检查痕量传播是否正在激活.
import { init, isTracingActive, SessionStrategy } from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity);
const tracingActive = isTracingActive();
console.log('Tracing active?', tracingActive);
- 它回来了
false当追踪未激活或SDK未运行时.
网络整合
网络请求的自动捕捉可视平台和正在使用的网络库的不同方式实现.
iOS系统
通过联署材料初始化时通过 enableNetworkInstrumentation: true 作为选择 init数字 :
import { init, SessionStrategy } from '@bitdrift/react-native';
init('<api key>', sessionStrategy: SessionStrategy.Activity, {
enableNetworkInstrumentation: true
});
如果初始化是通过本地的API进行,则尚未支持通过目标-C API实现此功能,如果对这一功能感兴趣,请联系.
机器人
要启用自动在Android上的 OkHttp 仪器,请添加 io.bitdrift.capture-plugin 应用程序中的插件 build.gradle 文件 :
plugins {
id 'io.bitdrift.capture-plugin' version '<version>'
}
要找到要使用的版本,请使用React Introduct计划中正在使用的Caption SDK的同版本. 检查 build.gradle 文档中 node_modules/@bitdrift/react-native/android 正在使用的 Caption SDK 版本的目录 .
对于手动 Gradle 设置, 启用插件仪表 :
bitdrift {
instrumentation {
automaticOkHttpInstrumentation = true
// Optional. Defaults to PROXY when omitted.
// okHttpInstrumentationType = OVERWRITE
}
}
除此之外,插件寄存器还需要添加到 pluginManagement 块 settings.gradle 文件 :
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven {
url 'https://dl.bitdrift.io/sdk/android-maven'
content {
includeGroupByRegex "io\\.bitdrift.*"
}
}
}
}
当使用 Expo 生成项目时,可以通过设置 networkInstrumentation 选项到 true 输入 app.json 文件 :
{
"expo": {
"plugins": [
[
'@bitdrift/react-native',
{
networkInstrumentation: true,
},
],
]
}
}
当使用 Expo 插件时 networkInstrumentation: true,则Android Gradle插件和 bitdrift { instrumentation { ... } } 块自动生成.
网络视频集成
WebView 仪器从 react-native-webview 网页视图如页面浏览,网络请求,导航事件,Web Vitals,长任务,控制台日志,用户互动和出错等. 打电话 init(...) 在任何 WebView 安装之前.
iOS系统
通过通过启用每个 WebVew 的自动仪器 UNSTABLE_enableWebViewInstrumentation: true 改为 init数字 :
import { init, SessionStrategy } from '@bitdrift/react-native';
init('<api key>', SessionStrategy.Activity, {
UNSTABLE_enableWebViewInstrumentation: true,
});
机器人
UNSTABLE_webViewInstrumentation 用于Android应用程序构建.
对于由Expo生成的Android应用程序,启用构建时的WebView字节码仪表:
{
"expo": {
"plugins": [
[
"@bitdrift/react-native",
{
"UNSTABLE_webViewInstrumentation": true
}
]
]
}
}
注释:
UNSTABLE_webViewInstrumentation只影响Android应用构建. 在iOS上,使用UNSTABLE_enableWebViewInstrumentation内init。 。 。 .- 它不会自动被应用到"梵地拉 React Independent Android"外的"博览会"配置插件流出.
- 对于非Expo Android 应用程序,应用 Gradle 插件和
bitdrift { instrumentation { automaticWebViewInstrumentation = true } }手动.
Android 插件模式可以配置 okHttpInstrumentationType数字 :
{
"expo": {
"plugins": [
[
"@bitdrift/react-native",
{
"networkInstrumentation": true,
"okHttpInstrumentationType": "OVERWRITE"
}
]
]
}
}
okHttpInstrumentationType 只有Android,对iOS没有影响.
PROXY(默认):保留现有EventListener.FactoryokHttp客户端的行为.OVERWRITE:替换收听器厂并可以避免某些应用设置中的网络跨度重复.
如果您最近升级并开始看到Android上的重复,请设定 okHttpInstrumentationType 改为 OVERWRITE。 。 。 .