Сеть и жизненный цикл iOS SDK
trackView(...)иtriggerEvent(...)запускают работу вTaskи возвращаются сразу; callback завершения запроса отсутствует.- HTTP-таймауты запроса и ресурса заданы в коде SDK: 5 секунд. Публичной настройки таймаутов нет.
- При ошибке загрузки методы выбора контента возвращают
nil; успешный ответ без подходящей кампании содержит пустойdata. Обрабатывайте эти состояния отдельно. - Постоянной очереди событий, автоматического повтора запросов и публичного
flushнет. Событие, отправленное без сети, SDK не сохраняет для следующего запуска. - У SDK нет публичного
dispose. Инициализируйте его один раз;trackView(...)вызывайте при фактическом открытии экрана, а не при каждом пересчёте SwiftUIbody.
Ошибка и пустой ответ
Возвращаемое nil означает сбой получения/разбора контента; пустой data в успешном ответе — отсутствие подходящей кампании. Для UI предусмотрите стандартное состояние приложения и возможность новой загрузки по пользовательскому действию.
trackView/triggerEvent не возвращают подтверждение доставки. Tracking callbacks отражают события контента и не заменяют callback успешного HTTP-запроса.
Повторная отправка
SDK не гарантирует доставку при потере сети. Если приложению нужна очередь, её реализуют на стороне приложения с собственной политикой повторов и идентификации; не приписывайте native SDK поведение офлайн-очереди Flutter.
Не повторяйте purchase автоматически по каждому открытию экрана. Отправляйте событие после завершения заказа с устойчивым uniqueTransactionId; сценарий повторной доставки согласуйте с backend интеграции.
Повторное создание экрана
В SwiftUI не отправляйте просмотр из body. Используйте событие появления экрана. При смене контекста создайте новый inline view; правила загрузки описаны в Кампаниях.
Проверка без сети
- Откройте экран без сети и убедитесь, что приложение показывает свой обычный UI.
- Восстановите соединение: SDK не должен считаться источником автоматической доставки прежних событий.
- Выполните новое действие и новую загрузку; проверьте запросы по логам.