Skip to Content

iOS SDK(Swift)快速开始

iOS / macOS / iPadOS 端 SDK。v0 覆盖日志 + 崩溃 + breadcrumb + identify,最低 iOS 13, 经 Swift Package Manager 接入。崩溃捕获含 Mach exception + POSIX signal + NSException 三保险, 崩溃写盘后下次启动自动扫盘补报。

对应 SDK:sdks/ios · 示例工程:examples/ios-demo · 设计:docs/07-design/sdk-ios.md

添加 SPM 依赖

在 Xcode:File → Add Package Dependencies… → Add Local…,选择仓库的 sdks/ios/ 目录, target 勾选 ArgusSDK library。

(正式发布后将提供远程 SPM URL / CocoaPods / Carthage。)

初始化(App 启动早期)

import ArgusSDK Argus.start(with: ArgusConfig( dsn: "argus://demo-public:demo-secret@localhost:4318/demo" ))

崩溃 handler 需要尽早注册,建议放在 App 的初始化或 AppDelegateapplication(_:didFinishLaunchingWithOptions:)

上报

// 日志(level 缺省 .info;attributes 可选) Argus.log("Payment failed", level: .error, attributes: ["module": "payment"]) // 用户 Argus.identify("user-123") // breadcrumb(不上报,仅在下次 crash 时随事件携带) Argus.addBreadcrumb("checkout opened") // 立即 flush 当前队列(退后台时建议调用) Argus.flush()

崩溃如何上报

  1. 崩溃发生时,SDK 把崩溃事件写盘Library/Caches/Argus/crashes/*.json(进程已崩,不能联网)。
  2. 进程重启后,Argus.shared.start(...) 时自动扫盘读取这些 JSON。
  3. CrashEvent 入上报队列,30 秒内 flush 发到 ingestion。
  4. 在 Argus Console /issues 页面看到对应崩溃 issue(按版本 + 栈顶聚合)。

调试器会拦截信号:在 Xcode debugger attach 时,SIGSEGV 等会被拦下。验证原生信号崩溃请 卸载 app 后直接在 simulator 运行(不开 Xcode)。

DSN 注入(示例工程做法)

示例工程从环境变量读 DSN,便于切换:Product → Scheme → Edit Scheme… → Run → Arguments → Environment Variables,加 ARGUS_DSN。生产工程一般用 build settings / xcconfig 注入。

v0 范围与推迟项

  • 已实现:log / crash(三保险)/ breadcrumb / identify。
  • 推迟到 v1+:APM / feedback / config / 客户端 symbolicate / C 内核 / Carthage / CocoaPods。

详见 ADR-0026