Проверка интеграции Flutter SDK
Проверяйте и UI приложения, и фактические запросы/события. Успешная загрузка кампании не подтверждает видимый показ, а завершение вызова события не гарантирует его доставку.
Чеклист перед выпуском
- В приложении используется
gravity_sdk 0.24.1или совместимый обновлённый релиз; проверена фактическая сборка. -
initialize()завершён до первого запроса; ключ и секция соответствуют окружению. - Android release-манифест разрешает интернет.
- Просмотры отправляются при открытии экранов, не на каждом
build(). - SKU, категории и
lngсовпадают с фидом, включая регистр. - Кампания опубликована; selector, контекст, аудитория и расписание совпадают с запросом.
- Обрабатываются
FollowUrlEventс browser/webview, диплинки и запрос push. - Login/SignUp содержат CUID с типом или hashedEmail.
- Выход/смена аккаунта сбрасывает профиль и персонализированный UI; очистка очереди выбрана явно.
- Исключения
resetUser()/restoreUserId()обработаны; ошибка хранилища не считается успешным удалением или восстановлением UID. - Headless имеет fallback; JSON проверяется до применения.
- Ручные показы привязаны к видимости, клики — к действиям; tracking SDK не дублируется.
- У покупок постоянный уникальный
uniqueTransactionId. - Проверены офлайн-доставка, перезапуск и блокировка автопоказа.
Диагностика
Проверка запросов
На тестовом устройстве включите LogLevel.debug. Сверьте:
- Ключ/секцию и адрес SDK API/прокси.
ctx.type,data,locationи атрибуты.- Идентификацию между просмотром, событием и запросом контента.
- Выбранный контент и переменные кампании.
- Tracking URL, которые действительно отправлены после видимости/клика.
- Событие покупки/формы на стороне Gravity Field.
До отправки логов в поддержку удалите ключи и пользовательские данные.
HTTP-логи доступны только в debug-сборке. Authorization скрыт, но тела запросов/ответов могут содержать пользовательские данные. Состав автоматических отчётов об ошибках отличается от состава этих логов.
Сценарии собственной отрисовки
В A/B и BDUI приведены скачиваемые примеры с этими проверками.
Сценарии очереди и блокировки
- Отключить сеть, отправить событие, перезапустить приложение: запись сохраняется до доставки, очистки или истечения срока.
- Восстановить сеть и вызвать
flushQueue(): проверить очередь и фактическое событие с исходным временем. - Сменить аккаунт до доставки: прежнее событие не должно приписаться новому пользователю.
- Выполнить
clearQueue(): ожидающие события не должны появиться снова после перезапуска. - Заблокировать автопоказ, отправить просмотр: UI не появляется; запрос контента может выполняться.
- Снять блокировку: пропущенная кампания не показывается автоматически задним числом.
- Проверить tooltip отдельно: presentation lock не блокирует этот путь.
- Отправить форму офлайн: UI может перейти к следующему действию до доставки результата.
- Очистить очередь во время ожидания сессии или паузы перед повторной отправкой: после успешного
clearQueue()прежнее событие не должно отправиться. - Сменить аккаунт или открыть новый маршрут во время загрузки in-app: прежняя кампания не открывается; проверьте также вложенный
Navigator. - Сменить пользователя во время загрузки inline/tooltip: SDK запрашивает данные для нового пользователя. Уже загруженные блоки пересоздаются приложением.
Обновление с прежних версий
При переходе с 0.24.0 на 0.24.1 проверьте:
- точную зависимость
gravity_sdk: 0.24.1и сборку на выбранной версии Flutter; исправлена совместимость с Flutter 3.38–3.41, минимальные требования пакета прежние; - обработку ошибок локального хранилища у
resetUser()иrestoreUserId(); - привязку события к исходному пользователю при смене аккаунта во время подготовки запроса;
- очистку очереди во время ожидания сессии, записи личности и повторных попыток;
- отказ от запоздалого автопоказа после смены пользователя/экрана, включая вложенную навигацию;
- повторную загрузку inline/tooltip для нового пользователя, если смена произошла во время запроса;
- логирование и состав телеметрии.
При обновлении с более ранних версий также проверьте:
- новую идентификацию контентных запросов после
setUser(); - наличие включённой по умолчанию очереди и выбранную политику выхода;
customProps/eventTimeи ID покупок;- обработку headless-ответа: модель в
GravityDataResponse.data, исходный JSON вGravityDataResponse.json; - доступ к
rawVariablesиContentClickEngagement; - блокировку и актуальность автопоказа.
История релизов: changelog 0.24.1. Полные сигнатуры: Справочник API.