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 的初始化或 AppDelegate 的
application(_: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()崩溃如何上报
- 崩溃发生时,SDK 把崩溃事件写盘到
Library/Caches/Argus/crashes/*.json(进程已崩,不能联网)。 - 进程重启后,
Argus.shared.start(...)时自动扫盘读取这些 JSON。 - 转
CrashEvent入上报队列,30 秒内 flush 发到 ingestion。 - 在 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 。