跳到主要内容

App 闪退收集器

AIBudsCrashReporter 会将崩溃报告保存在本地。宿主 App 可在下次启动时读取报告,在内部诊断界面中查看,通过自有后端上传,并在处理完成后删除。

该模块不负责用户同意、报告上传、保留期限及支持人员的权限控制,这些均由宿主 App 自行管理。

Animated workflow

跨应用启动的崩溃报告处理流程

崩溃发生时,报告会保存在本地;App 再次启动后,宿主 App 读取并按产品策略处理报告。

本次运行

尽早启用

在 App 生命周期入口仅安装一次。

App 闪退收集器

采集崩溃

进程异常终止时,将崩溃报告保存在本地。

下次运行

App 重新启动

启动后读取上次运行生成的崩溃报告。

跨次运行
宿主 App

获取报告列表

避开启动关键路径,按时间倒序读取报告路径。

应用后端

经用户同意后处理

通过 App 自有的安全流程查看或上传报告。

保留策略

处理完成后删除

仅在上传确认或保留期限到期后删除列表中的报告。

在上传成功并收到确认,或达到本地保留期限之前,请保留报告。

尽早启用,下次启动后处理​

在处理其他业务逻辑前,通过应用生命周期入口仅安装一次 CrashReporterSDK。默认情况下,报告存储在 App Documents 目录下的 .aibuds/crash_logs。如果 App 有明确的存储策略,也可以指定自定义根路径。

如果上次运行发生崩溃,last-crash 回调会返回最新报告的路径;report-list 回调仅通知本地报告列表已更新。这两个回调都不会上传或删除报告。

Swift
CrashReporterSDK.install(
    withLastCrashReportCallback: { path in
        guard let path else { return }
        // Enqueue consent-aware inspection or upload outside this callback.
    },
    reportListUpdateCallback: {
        // Refresh internal diagnostic state.
    }
)

All-in-One 包含该模块,但仍需显式调用 installCrashReporter。

使用 AI 辅助实现

使用 AI 开发

让 AI 帮助实现此工作流

使用官方“管理 AIBuds 崩溃报告”技能,根据你的 App 完成实现。

请阅读并遵循 https://docs-aibuds.github.io/zh-Hans/skills/manage-aibuds-crash-reports,使用该技能在当前 iOS 项目中完成“管理 AIBuds 崩溃报告”,并验证结果。
查看官方技能

崩溃报告管理​

allCrashReportPaths() 按时间倒序返回报告路径,最新报告排在最前。请异步读取或上传报告,确认操作成功后,再对列表中取得的路径调用 deleteCrashReport。

不要向删除方法传入任意文件路径。重试逻辑应保持幂等,并在后端确认处理成功或报告达到保留期限前继续保留报告。

用户信息​

setUserInfo(_:forKey:) 接受 String、Int、UInt、Double、Bool 和 Date,也支持通过键名删除对应值。只添加必要且可安全写入崩溃报告的诊断信息,优先使用取值范围有限、便于分类的字段。

不要保存访问令牌、转写内容、音频、邮箱地址、完整设备标识符、精确位置及其他个人数据。会话结束时清除仅对当前会话有效的信息,避免失效信息被写入之后生成的崩溃报告。

隐私与运维​

  • 按产品要求取得崩溃采集和上传所需的用户同意。
  • 使用加密通道上传,并验证接收端身份。
  • 限制本地报告和服务端报告的访问权限。
  • 设置报告保留时长和磁盘使用上限。
  • 在可信环境中使用与 App 版本匹配的构建产物进行符号解析(Symbolication)。
  • 报告上传失败不得阻塞 App 启动。
  • 不要在生产环境的验证流程中主动触发崩溃。

验证清单​

  • 在 App 启动早期仅安装一次。
  • 在不影响启动的时机处理上次运行生成的报告。
  • 收到上传成功确认后再删除报告。
  • 只删除报告列表中返回的路径。
  • 用户信息中不包含密钥和敏感内容。
  • 会话结束后及时清除会话级信息。
  • 已记录保留期限、用户同意、符号解析和后端访问策略。
  • 在获准的非生产环境中测试发布版本的崩溃采集。