App 闪退收集器
AIBudsCrashReporter 会将崩溃报告保存在本地。宿主 App 可在下次启动时读取报告,在内部诊断界面中查看,通过自有后端上传,并在处理完成后删除。
该模块不负责用户同意、报告上传、保留期限及支持人员的权限控制,这些均由宿主 App 自行管理。
跨应用启动的崩溃报告处理流程
崩溃发生时,报告会保存在本地;App 再次启动后,宿主 App 读取并按产品策略处理报告。
尽早启用,下次启动后处理
在处理其他业务逻辑前,通过应用生命周期入口仅安装一次 CrashReporterSDK。默认情况下,报告存储在 App Documents 目录下的 .aibuds/crash_logs。如果 App 有明确的存储策略,也可以指定自定义根路径。
如果上次运行发生崩溃,last-crash 回调会返回最新报告的路径;report-list 回调仅通知本地报告列表已更新。这两个回调都不会上传或删除报告。
- Swift
- Objective-C
CrashReporterSDK.install(
withLastCrashReportCallback: { path in
guard let path else { return }
// Enqueue consent-aware inspection or upload outside this callback.
},
reportListUpdateCallback: {
// Refresh internal diagnostic state.
}
)[AIBudsCrashReporterSDK
installWithLastCrashReportCallback:^(NSString *_Nullable path) {
if (path == nil) {
return;
}
// Enqueue consent-aware inspection or upload outside this callback.
}
reportListUpdateCallback:^{
// Refresh internal diagnostic state.
}];All-in-One 包含该模块,但仍需显式调用 installCrashReporter。
使用 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 启动早期仅安装一次。
- 在不影响启动的时机处理上次运行生成的报告。
- 收到上传成功确认后再删除报告。
- 只删除报告列表中返回的路径。
- 用户信息中不包含密钥和敏感内容。
- 会话结束后及时清除会话级信息。
- 已记录保留期限、用户同意、符号解析和后端访问策略。
- 在获准的非生产环境中测试发布版本的崩溃采集。