Skip to content
ioswidgetslive-activitysentryerror-tracking

Отслеживание ошибок в нативных iOS-расширениях

Расширения (HomeWidget, Live Activity) не имеют доступа к сети и Sentry SDK. Отчёты пишутся в App Group, при запуске приложения отправляются в Sentry.

Архитектура

Как использовать

1. Breadcrumbs

В начале выполнения очищайте и записывайте шаги:

swift
WidgetBreadcrumb.clear()
WidgetBreadcrumb.record(category: "home_widget", message: "getTimeline started")
// ... логика
WidgetBreadcrumb.record(category: "home_widget", message: "fetch completed", data: ["state": "freezed"])

2. Ошибки

В catch или при ошибке:

swift
WidgetReportStorage.enqueueError(
    WidgetErrorReporter.makeReport(
        error: error,
        source: "home_widget",   // идентификатор модуля
        stage: "fetchData",     // этап
        widgetFamily: nil       // для Home Widget  .systemSmall и т.д.
    )
)

Предупреждение без error:

swift
WidgetReportStorage.enqueueError(
    WidgetErrorReporter.makeReport(
        source: "home_widget",
        stage: "validation",
        extra: ["reason": "invalid_state"]
    )
)

3. Пропущенные обновления (опционально)

swift
let report = WidgetReport(
    source: "home_widget",
    type: .missedUpdate,
    level: .warning,
    timestamp: Date(),
    message: "Update was missed",
    context: ReportContext(stage: "scheduled_update", platform: "ios", widgetFamily: nil),
    error: nil,
    breadcrumbs: [],
    extra: ["scheduled_for": "...", "last_run_at": "..."]
)
WidgetReportStorage.enqueueMissedUpdate(report)

Как расширить (новый модуль, например Live Activity)

Шаг 1. Подключить Shared

В Runner.xcodeproj/project.pbxproj добавьте Shared в fileSystemSynchronizedGroups target расширения:

11WR00302E2F9545005C4E8F /* Shared */,

Шаг 2. App Group

В entitlements расширения должен быть group.artforintrovert.app.

Шаг 3. Код

Используйте WidgetBreadcrumb и WidgetErrorReporter как в разделе «Как использовать», указывая свой source (например "live_activity").

Flutter и Pigeon уже настроены — отчёты автоматически попадут в Sentry при запуске приложения.


Ограничения

  • До 20 отчётов в очереди ошибок и 20 в очереди пропущенных обновлений.
  • Отправка только при следующем запуске приложения.
  • При переустановке отчёты теряются.

Авторы

The avatar of contributor named as Arutyun Gevorkyan Arutyun Gevorkyan

История