# Сеть и жизненный цикл iOS SDK

- `trackView(...)` и `triggerEvent(...)` запускают работу в `Task` и возвращаются сразу; callback завершения запроса отсутствует.
- HTTP-таймауты запроса и ресурса заданы в коде SDK: 5 секунд. Публичной настройки таймаутов нет.
- При ошибке загрузки методы выбора контента возвращают `nil`; успешный ответ без подходящей кампании содержит пустой `data`. Обрабатывайте эти состояния отдельно.
- Постоянной очереди событий, автоматического повтора запросов и публичного `flush` нет. Событие, отправленное без сети, SDK не сохраняет для следующего запуска.
- У SDK нет публичного `dispose`. Инициализируйте его один раз; `trackView(...)` вызывайте при фактическом открытии экрана, а не при каждом пересчёте SwiftUI `body`.

## Ошибка и пустой ответ

Возвращаемое `nil` означает сбой получения/разбора контента; пустой `data` в успешном ответе — отсутствие подходящей кампании. Для UI предусмотрите стандартное состояние приложения и возможность новой загрузки по пользовательскому действию.

trackView/triggerEvent не возвращают подтверждение доставки. Tracking callbacks отражают события контента и не заменяют callback успешного HTTP-запроса.

## Повторная отправка

SDK не гарантирует доставку при потере сети. Если приложению нужна очередь, её реализуют на стороне приложения с собственной политикой повторов и идентификации; не приписывайте native SDK поведение [офлайн-очереди Flutter](../flutter/offline.md).

Не повторяйте purchase автоматически по каждому открытию экрана. Отправляйте событие после завершения заказа с устойчивым uniqueTransactionId; сценарий повторной доставки согласуйте с backend интеграции.

## Повторное создание экрана

В SwiftUI не отправляйте просмотр из body. Используйте событие появления экрана. При смене контекста создайте новый inline view; правила загрузки описаны в [Кампаниях](./campaigns.md#inline-компоненты).

## Проверка без сети

1. Откройте экран без сети и убедитесь, что приложение показывает свой обычный UI.
2. Восстановите соединение: SDK не должен считаться источником автоматической доставки прежних событий.
3. Выполните новое действие и новую загрузку; проверьте запросы по логам.
