Skip to Content
快速开始React Native SDK

React Native SDK 快速开始

React Native 端 SDK。覆盖日志、埋点、性能 metric、崩溃捕获(同步异常 + 未处理 Promise rejection)、 离线持久化。要求 RN 0.72+ 与 Hermes 引擎(未处理 rejection 捕获依赖 Hermes)。

安装

npm install @argus/sdk-react-native @react-native-async-storage/async-storage cd ios && pod install && cd .. # 仅 iOS 需要

初始化(应用入口,只调一次)

import { Platform } from "react-native"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { Argus } from "@argus/sdk-react-native"; Argus.init({ // 换成你在 Argus Console 拿到的 DSN dsn: "argus://demo-public:demo-secret@localhost:4318/demo", userId: "demo-user", appVersion: "1.0.0", // 宿主注入:SDK 自身不 import react-native / AsyncStorage(保持纯 JS、可 node 测) deviceOs: Platform.OS, deviceOsVersion: String(Platform.Version), storage: AsyncStorage, // 自动捕获未处理同步异常(ErrorUtils,默认 true) captureUncaught: true, // opt-in:捕获未处理 Promise rejection(Hermes,默认 false) captureUnhandledRejections: true, });

上报

// 日志 → /v1/events Argus.log("INFO", "button: log tapped", { screen: "demo" }); // 埋点 → /v1/track(先设归因,再 track) Argus.setAttribution({ utm_source: "demo", utm_medium: "app", utm_campaign: "rn" }); Argus.track("demo_button_tap", { kind: "track" }); // 性能 metric → /v1/apm Argus.metric("button_latency", 42, { unit: "ms" }); // 手动 captureCrash → /v1/events Argus.captureCrash({ errorType: "DemoError", errorMessage: "manual crash from demo", stacktrace: new Error("demo").stack, }); // 退后台时建议调用 await Argus.flush();

接入要点

  • 宿主注入deviceOs / deviceOsVersion / storage 由你的 app 注入(SDK 不 import RN)。
  • 自动捕获captureUncaught(默认 true,ErrorUtils 同步异常);captureUnhandledRejections (默认 falseopt-in,Hermes 异步 rejection)。
  • 离线可靠性:注入 storage 后,离线时 log / crash 积压持久化,app 重启自动恢复重发 (track / apm 为 best-effort,不持久化)。
  • 退后台 flush:在 AppState 变为 'background' 时调 Argus.flush(),避免丢未发批次。

示例 examples/rn-demo接入代码 参考,不含原生 iOS/Android 工程与 Metro 样板——把 App.tsx 的接入代码合并到你用 npx react-native init 创建的工程即可。