Сеть и жизненный цикл Android SDK
trackView(...)иtriggerEvent(...)запускают корутины в SDK и сразу возвращаются. В Compose вызывайте просмотр черезLaunchedEffectпри входе на экран, а не при каждой рекомпозиции.- Connect/request timeout задан в SDK: 5 секунд. Публичной настройки таймаутов нет.
- Постоянной очереди событий, автоматического повтора запросов и публичного
flushнет. События без сети не сохраняются для следующего запуска. dispose()отменяет coroutine scopes SDK и снимает listener presentation lock. Это завершение работы экземпляра SDK; после негоtrackView,triggerEventи доставка callbacks через отменённые scopes не возобновятся автоматически. Не вызывайтеdispose()при закрытии каждой Activity/Fragment — используйте методы сброса inline-кэша.
Ошибка и пустой ответ
Возвращаемое null означает сбой получения/разбора контента; пустой data в успешном ответе — отсутствие подходящей кампании. Для UI предусмотрите стандартное состояние приложения и возможность новой загрузки по пользовательскому действию.
trackView/triggerEvent не возвращают подтверждение доставки. Tracking callbacks отражают события контента и не заменяют callback успешного HTTP-запроса.
Повторная отправка
SDK не гарантирует доставку при потере сети. Если приложению нужна очередь, её реализуют на стороне приложения с собственной политикой повторов и идентификации; не приписывайте native SDK поведение офлайн-очереди Flutter.
Не повторяйте purchase автоматически по каждому открытию экрана. Отправляйте событие после завершения заказа с устойчивым uniqueTransactionId; сценарий повторной доставки согласуйте с backend интеграции.
Повторное создание экрана
В Compose отправляйте просмотр через LaunchedEffect, привязанный к открытию экрана. GravityInlineCompose запускает загрузку по selector: изменение только PageContext на том же экземпляре не запускает новый эффект. При смене товара/контекста пересоздайте блок через key(pageContext), сохранив обычный selector кампании. Кэш inline-блоков.
Проверка без сети
- Откройте экран без сети и убедитесь, что приложение показывает свой обычный UI.
- Восстановите соединение: SDK не должен считаться источником автоматической доставки прежних событий.
- Выполните новое действие и новую загрузку; проверьте запросы по логам.