Проверка интеграции Android SDK
Чеклист перед выпуском
- SDK инициализирован до первого обращения; API key и section относятся к нужному проекту.
- Просмотр отправляется при открытии экрана, событие — после фактического действия.
- SKU, категории и lng совпадают с товарным фидом, включая регистр.
- LoginEvent связывает профиль по согласованному CUID; ограничения setUser учтены.
- In-app кампания опубликована, UI доступен, presentation lock снята.
- Inline selector совпадает с кампанией; блок получает место в вёрстке и ProductViewBuilder для товаров.
- Навигация по URL/deeplink обработана, tracking встроенного UI не дублируется.
- Проверены ошибка сети, пустой ответ и возврат на экран; 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 и показ рекомендаций. Полная интеграционная проверка требует реальной кампании и устройства/эмулятора.