用途:为 Swift/Apple 项目生成生产可用的错误监控基础设施,采用协议化架构以便替换供应商。适用于用户要求添加崩溃上报、错误跟踪、崩溃分析或在生产环境调试问题时。
主要能力:生成 ErrorMonitoringService 协议及 ErrorContext、NoOpErrorMonitoring 等核心文件,并按选择生成 Sentry 或 Crashlytics 的 Provider 实现;支持错误捕获、消息捕获、面包屑、用户上下文设置与重置;通过 NoOp 实现支持测试与隐私场景;提供面包屑与用户上下文的可选项配置。
使用方式:生成前会先检测项目中是否已有 Sentry、Crashlytics、CrashReporter 或既有错误处理模式,如存在则询问是替换、包装还是并行;随后向用户确认初始供应商(Sentry / Firebase Crashlytics / 仅基础设施)、是否包含面包屑、是否包含用户上下文。生成后在 App.swift 的 init 中调用 ErrorMonitoring.shared.configure(),通过环境注入 service;捕获错误使用 ErrorMonitoring.shared.service.captureError(error),面包屑使用 addBreadcrumb。切换供应商只需改动 ErrorMonitoring 中 service 赋值一行。
供应商接入:Sentry 需在 sentry.io 建项目获取 DSN,并在 Package.swift 添加 .package(url: "https://github.com/getsentry/sentry-cocoa", from: "8.0.0");Crashlytics 需在 Firebase 控制台添加项目、下载 GoogleService-Info.plist、通过 SPM 或 CocoaPods 集成并启用。
适用场景:iOS/macOS 应用的崩溃上报、错误跟踪、生产问题调试,常与 analytics-setup、logging-setup 配合。
限制与注意事项:涉及隐私合规(GDPR、App Store 指南),需在隐私政策披露、匿名化用户 ID、避免采集 PII,并在 iOS 17+ 的 PrivacyInfo.xcprivacy 声明崩溃数据;可能出现错误未上报、符号化失败或高量成本问题,需检查 DSN、网络、dSYM 上传与采样策略。具体平台版本与计费细节资料未提供。