Сборщик отчётов о сбоях
AIBudsCrashReporter сохраняет отчёты о сбоях локально, чтобы при следующем запуске приложение могло обнаружить их, предоставить внутреннюю диагностику, отправить через собственный backend и удалить после обработки.
Модуль не определяет согласие пользователя, транспорт отправки, срок хранения или доступ поддержки. За это отвечает приложение.
Жизненный цикл отчёта между запусками
Сбой фиксируется в завершившемся запуске; обнаружение и управляемая продуктом обработка выполняются после следующего запуска приложения.
Установите заранее, обработайте при следующем запуске
Один раз установите CrashReporterSDK из жизненного цикла приложения до запуска функций. По умолчанию отчёты хранятся в .aibuds/crash_logs каталога Documents. Если приложение определяет собственную политику хранения, можно задать другой корневой путь.
Callback последнего сбоя возвращает самый новый путь, если предыдущий запуск завершился аварийно. Callback списка сообщает об изменении локального набора. Ни один из них не отправляет и не удаляет отчёты.
- 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» и адаптируйте сценарий к приложению.
Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/manage-aibuds-crash-reports. Используйте этот навык, чтобы реализовать «Управление отчётами о сбоях AIBuds» в данном iOS-проекте и проверить результат.Управление отчётами
allCrashReportPaths() возвращает пути от новых к старым. Читайте или отправляйте отчёт асинхронно, убедитесь в успехе и только затем вызывайте deleteCrashReport для пути из этого списка.
Не передавайте для удаления произвольные пути. Делайте повторы идемпотентными и храните отчёт до подтверждения backend или истечения срока хранения.
Пользовательские сведения
setUserInfo(_:forKey:) принимает String, Int, UInt, Double, Bool и Date; значения можно удалять по ключу. Добавляйте только компактный диагностический контекст, безопасный для хранения в отчёте.
Не сохраняйте токены, распознанный текст, аудио, адреса электронной почты, полные идентификаторы устройств, точную геопозицию и другие персональные данные. Удаляйте значения сессии после её завершения, чтобы устаревший контекст не попал в последующий отчёт.
Конфиденциальность и эксплуатация
- Получите необходимое согласие на сбор и отправку.
- Шифруйте отправку и авторизуйте backend поддержки.
- Ограничьте локальный и серверный доступ.
- Определите максимальный возраст отчёта и объём на диске.
- Выполняйте символикацию с подходящими артефактами сборки в доверенной инфраструктуре.
- Не связывайте ошибки отправки отчётов с запуском приложения.
- Не вызывайте намеренный сбой при проверке production-сборки.
Контрольный список
- Установка выполняется один раз на раннем этапе.
- Отчёты предыдущего запуска обрабатываются вне критического пути запуска.
- Удаление выполняется после подтверждения отправки.
- Удаляются только пути из полученного списка.
- Пользовательские сведения не содержат секреты и чувствительные данные.
- Метаданные сессии удаляются после потери актуальности.
- Хранение, согласие, символикация и доступ backend документированы.
- Сбор сбоев release-сборки проверен в утверждённом непроизводственном сценарии.