Проверка интеграции Android SDK

Чеклист перед выпуском

  1. SDK инициализирован до первого обращения; API key и section относятся к нужному проекту.
  2. Просмотр отправляется при открытии экрана, событие — после фактического действия.
  3. SKU, категории и lng совпадают с товарным фидом, включая регистр.
  4. LoginEvent связывает профиль по согласованному CUID; ограничения setUser учтены.
  5. In-app кампания опубликована, UI доступен, presentation lock снята.
  6. Inline selector совпадает с кампанией; блок получает место в вёрстке и ProductViewBuilder для товаров.
  7. Навигация по URL/deeplink обработана, tracking встроенного UI не дублируется.
  8. Проверены ошибка сети, пустой ответ и возврат на экран; UI приложения сохраняет работоспособность.

Проверка запросов

На время диагностики включите LogLevel.DEBUG. Проверьте sec, user, ctx, selector и содержимое ответа. Полный debug-лог содержит Authorization и данные запросов; используйте его только для отладки. Настройка логирования.

Особенность сериализации /choose проверяйте по правилу Android 1.0.4.

Почему GravityInlineView не отображается?

Проверьте два условия: в XML задан app:selector, а после инфлейта вызван init(pageContext). Без init(...) SDK не получит контекст для загрузки кампании.

Почему GravityInlineCompose не показывает контент?

Проверьте selector, pageContext и то, что composable действительно получает место на экране. Для отладки удобно временно передать loader, чтобы различать состояние загрузки и отсутствие кампании.

Почему кампания не показывается после trackView(...) или triggerEvent(...)?

Проверьте PageContext, актуальность section, наличие подходящей кампании и то, что в activityContext передается контекст текущего экрана. Если SDK не сможет определить Activity, in-app-показ не произойдет.

Почему getContentBySelector(...) возвращает null ещё до HTTP-запроса?

Проверьте JSON-кодирование selector: в 1.0.4 строка с пробелами может вызвать ошибку разбора, а строка без JSON-кавычек — уйти в HTTP-тело как нестроковое значение. Используйте обход сериализации и включите LogLevel.DEBUG для диагностики.

Почему приложение не падает, даже если сеть недоступна?

Android SDK обрабатывает сетевые ошибки внутри себя. В этом случае контент просто не будет показан или не будет загружен.

Нужно ли передавать lng, utm и attributes всегда?

Нет. lng нужен только если проект использует мультирегиональность и региональные варианты данных в фиде. utm и attributes нужны только если на них завязаны правила таргетинга или аналитика.

Нужно ли отдельно передавать decisionId в engagement?

Нет. В публичных Android-методах engagement он не передается отдельным параметром. Используйте объекты slot, content и campaign, полученные из ответа SDK.

После обновления SDK

Сопоставьте установленную версию со справочником API, повторно проверьте события, выбор контента, navigation callbacks и показ рекомендаций. Полная интеграционная проверка требует реальной кампании и устройства/эмулятора.