Перейти к основному содержимому

Сборщик отчётов о сбоях

AIBudsCrashReporter сохраняет отчёты о сбоях локально, чтобы при следующем запуске приложение могло обнаружить их, предоставить внутреннюю диагностику, отправить через собственный backend и удалить после обработки.

Модуль не определяет согласие пользователя, транспорт отправки, срок хранения или доступ поддержки. За это отвечает приложение.

Animated workflow

Жизненный цикл отчёта между запусками

Сбой фиксируется в завершившемся запуске; обнаружение и управляемая продуктом обработка выполняются после следующего запуска приложения.

Текущий запуск

Установить заранее

Установить один сборщик из жизненного цикла приложения.

Crash Reporter

Зафиксировать сбой

Локально сохранить отчёт при аварийном завершении процесса.

Следующий запуск

Перезапустить приложение

После запуска обнаружить сбой предыдущей сессии.

между запусками
Приложение

Получить список отчётов

Прочитать пути от новых к старым вне критического пути запуска.

Backend продукта

Обработать с согласием

Просмотреть или отправить через защищённый процесс приложения.

Политика хранения

Удалить после обработки

Удалить только путь из списка после подтверждения или истечения срока.

Храните отчёт до подтверждения разрешённой отправки или истечения локального срока хранения.

Установите заранее, обработайте при следующем запуске

Один раз установите CrashReporterSDK из жизненного цикла приложения до запуска функций. По умолчанию отчёты хранятся в .aibuds/crash_logs каталога Documents. Если приложение определяет собственную политику хранения, можно задать другой корневой путь.

Callback последнего сбоя возвращает самый новый путь, если предыдущий запуск завершился аварийно. Callback списка сообщает об изменении локального набора. Ни один из них не отправляет и не удаляет отчёты.

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» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции 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-сборки проверен в утверждённом непроизводственном сценарии.