Адаптивный inline-баннер
Адаптивный inline-баннер — гибкий формат баннерной рекламы, обеспечивающий максимальную эффективность за счет оптимизации размера рекламы для каждого устройства.
Данный тип рекламы позволяет разработчикам указывать максимально допустимые ширину и высоту объявления, при этом оптимальный размер рекламы определяется автоматически. Чтобы выбрать лучший размер объявления, встроенные адаптивные баннеры используют максимальную, а не фиксированную высоту. Это позволяет повысить производительность.
Как правило, такой формат используется в приложениях-лентах или там, где допустимо обеспечить основной фокус на рекламе.
Внешний вид
Это руководство покажет, как интегрировать адаптивный inline-баннер в приложение на Compose Multiplatform. В дополнение к примерам кода и инструкции, оно также содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.
Пререквизит
- Выполните шаги по интеграции Yandex Mobile Ads Compose Multiplatform Plugin, описанные в Быстром старте.
- Убедитесь, что используете самую актуальную версию Yandex Mobile Ads Compose Multiplatform Plugin, а в случае использовании медиации — наиболее свежую версию единой сборки.
Имплементация
Основные шаги по интеграции адаптивного inline-баннера:
- Добавить в интерфейс composable
Bannerи передатьBannerAdSize.Inlineс шириной контейнера и максимальной высотой. - Задать коллбэки жизненного цикла объявления через
BannerEvents.
Особенности подключения адаптивного inline-баннера
- Создать состояние через
rememberBannerAdState()с размеромBannerAdSize.Inline(ширина и максимальная высота вdp). При необходимости передатьBannerEvents. - Запустить загрузку вызовом
loadAd(AdRequest)— обычно изLaunchedEffect, когда готовы идентификатор слота и размеры. - Передать состояние в
Bannerчерез параметрstate.
Пример размещения на экране:
@Composable
fun BannerSlot(adRequest: AdRequest, width: Dp, maxHeight: Dp) {
val bannerState = rememberBannerAdState(
adSize = BannerAdSize.Inline(width, maxHeight),
events = BannerEvents(
onAdLoaded = { adInfo -> /* ad loaded */ },
onAdFailedToLoad = { error -> /* handle error */ },
onAdClicked = { /* ad clicked */ },
onImpression = { data -> /* impression tracked */ },
),
)
LaunchedEffect(adRequest) {
bannerState.loadAd(adRequest)
}
Banner(
state = bannerState,
modifier = Modifier.fillMaxWidth(),
)
}
Для загрузки нужен идентификатор рекламного места из интерфейса Рекламной сети Яндекса (adUnitId).
Ширину контейнера задавайте по доступной области: рекомендуется полная ширина родителя или экрана с учётом отступов и safe area.
После успешной загрузки объявление показывается автоматически.
Особенности подключения адаптивного inline-баннера
-
Если коллбэк
onAdFailedToLoadсообщает об ошибке, не пытайтесь сразу загрузить новое объявление. Если без повторной загрузки не обойтись, ограничьте число попыток — так вы снизите риск постоянных неудачных запросов и проблем с подключением при ограничениях на стороне сети. -
Чтобы адаптивные inline-баннеры работали корректно, сделайте макеты приложения адаптивными.
-
Адаптивные inline-баннеры лучше всего работают на полной доступной ширине. Чаще всего это ширина экрана устройства. Учитывайте отступы в приложении и безопасную зону экрана.
-
Значение
BannerAdSize.Inline(width, maxHeight)задаёт параметры подбора размеров на стороне сервиса; фактическая высота после отрисовки может меняться между загрузками.
Тестирование интеграции адаптивного inline-баннера
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции адаптивного inline-баннера и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.
Демонстрационный adUnitId: demo-banner-yandex.
Важно
Убедитесь, что перед выкладыванием приложения в магазин вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции адаптивного inline-баннера можно через встроенный в SDK анализатор. Подробный отчет о проверке выведется в лог.
Для просмотра отчета, выполните поиск по ключевому слову YandexAds в инструменте отладки Android-приложений Logcat.
adb logcat -v brief '*:S YandexAds'
В случае успешной интеграции вы увидите следующее сообщение:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type banner was integrated successfully
В случае обнаружения проблем при интеграции баннерной рекламы вы получите подробный отчет о проблемах и рекомендации по их устранению.
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции рекламы и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.
Демонстрационный adUnitId: demo-banner-yandex.
Важно
Убедитесь, что перед выкладыванием приложения в магазин вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции рекламы можно через нативный инструмент Console.
Чтобы получить возможность просматривать расширенные логи, необходимо вызвать метод enableLogging класса YandexAds.
YandexAds.enableLogging()
Для просмотра логов SDK в инструменте Console установите Subsystem = com.mobile.ads.ads.sdk. Вы можете фильтровать логи по категории и уровню ошибки.
В случае обнаружения проблем при интеграции рекламы вы увидите подробный отчет о проблемах и рекомендации по их устранению.
Дополнительные ресурсы
-
Link to GitHub.