跳到主要内容

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:) 接受 StringIntUIntDoubleBoolDate,也支持通过键名删除对应值。只添加必要且可安全写入崩溃报告的诊断信息,优先使用取值范围有限、便于分类的字段。

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

隐私与运维

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

验证清单

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