Адаптивный sticky-баннер
Адаптивный sticky-баннер — небольшое, автоматически обновляемое рекламное объявление, которое располагается внизу или вверху экрана приложения. Баннер не перекрывает основной контент приложения и часто используется в приложениях-играх.
Адаптивный sticky-баннер обеспечивает максимальную эффективность за счет оптимизации размера рекламы для каждого устройства. Данный тип рекламы позволяет разработчикам указывать максимально допустимую ширину объявления, при этом наиболее оптимальный размер рекламы определяется автоматически. Высота адаптивного sticky-баннера не будет превышать 15% высоты экрана.
Внешний вид
Это руководство покажет, как интегрировать адаптивный sticky-баннер в Android‐приложение с помощью Jetpack Compose расширения. В дополнение к примерам кода и инструкции оно содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.
Пререквизит
- Выполните шаги по интеграции sdk, описанные в Быстром старте.
- Заранее проинициализируйте рекламный SDK.
- Убедитесь, что используете самую актуальную версию Yandex Mobile Ads SDK, а в случае использовании медиации — наиболее свежую версию единой сборки.
Для использования Compose расширения добавьте зависимость в build.gradle.kts:
dependencies {
implementation("com.yandex.android:mobileads:8.0.0")
implementation("com.yandex.android:mobileads-compose:8.0.0")
// Compose BOM (минимум 2024.01.00)
implementation(platform("androidx.compose:compose-bom:2025.03.00"))
}
Имплементация
Основные шаги по интеграции адаптивного sticky-баннера:
- Использовать composable
Bannerс размеромBannerSize.Sticky. - При необходимости передать
BannerEventsдля отслеживания событий рекламы.
Особенности подключения адаптивного sticky-баннера
-
Все вызовы методов Yandex Mobile Ads SDK необходимо выполнять из главного потока.
-
Если вы получили ошибку в коллбэке
onAdFailedToLoad(), не пытайтесь загрузить новое объявление снова. Если всё же необходимо это сделать, ограничьте число повторных попыток загрузки рекламы. Это поможет избежать постоянных неудачных запросов и проблем с подключением в случае ограничений. -
Адаптивные sticky-баннеры лучше всего работают при использовании всей доступной ширины. В большинстве случаев это будет полная ширина экрана используемого устройства. Обязательно учитывайте применимые в приложении отступы (padding) и безопасные зоны (safe area) дисплея.
-
Размер рекламы задаётся через
BannerSize.Sticky(width), где ширина указывается в dp. Context для расчёта разрешается внутри composable автоматически. Высота рассчитывается автоматически. -
Если у вас включена медиация, желательно дождаться завершения инициализации, прежде чем рассчитывать размеры sticky-баннера. До окончания инициализации доступен только предварительный размер, который может измениться после получения актуальных настроек.
-
Размер sticky-баннера остаётся постоянным для одного и того же устройства. Протестировав макет своего приложения на конкретном устройстве, вы можете быть уверены, что размер объявления не изменится.
-
Высота адаптивного sticky-баннера не будет превышать 15% высоты экрана и не меньше 50dp.
-
Composable
Bannerсамостоятельно загружает и уничтожает рекламу в соответствии с жизненным циклом Compose. Ручное управлениеBannerAdViewне требуется. ЕслиadRequestилиadSizeменяются —BannerAdViewпересоздаётся автоматически.
Загрузка и отображение рекламы
Для отображения sticky-баннера используйте composable Banner с размером BannerSize.Sticky. Укажите ширину в dp.
Composable автоматически рассчитывает размер, загружает и отображает рекламу. Управлять жизненным циклом BannerAdView вручную не нужно.
Для загрузки рекламы потребуется идентификатор рекламного места, полученный вами в интерфейсе Рекламной сети Яндекса.
Расширить параметры запроса за рекламой можно через AdRequest.Builder(), передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.
В следующем примере показано, как отобразить адаптивный sticky-баннер. После успешной загрузки баннер отобразится автоматически:
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerSize
@Composable
fun MyScreen() {
Banner(
adRequest = AdRequest.Builder("your-ad-unit-id").build(),
adSize = BannerSize.Sticky(width = 320),
modifier = Modifier.fillMaxWidth(),
)
}
Для отслеживания событий рекламы передайте BannerEvents:
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerEvents
import com.yandex.mobile.ads.compose.BannerSize
@Composable
fun MyScreen() {
Banner(
adRequest = AdRequest.Builder("your-ad-unit-id").build(),
adSize = BannerSize.Sticky(width = 320),
modifier = Modifier.fillMaxWidth(),
events = BannerEvents(
onAdLoaded = { Log.d("YandexAds", "Баннер загружен") },
onAdFailedToLoad = { error -> Log.e("YandexAds", error.description) },
onAdClicked = { Log.d("YandexAds", "Клик по баннеру") },
onImpression = { data -> Log.d("YandexAds", "Показ: ${data?.rawData}") },
)
)
}
Если вы размещаете рекламу через систему Adfox, после загрузки баннера данные campaignId, bannerId и placeId доступны из объектов BannerAdView через свойство adAttributes типа AdAttributes.
Тестирование интеграции адаптивного sticky-баннера
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции адаптивного sticky-баннера, а также для тестирования вашего приложения, рекомендуется использовать тестовую рекламу.
Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой, мы создали специальный демонстрационный идентификатор рекламного места. Используйте его для проверки корректной интеграции рекламы.
Демонстрационный adUnitId: demo-banner-yandex.
Важно
Убедитесь, что перед выкладыванием приложения в store, вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции адаптивного sticky-баннера можно через встроенный в 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
В случае обнаружения проблем при интеграции баннерной рекламы — подробный отчет о проблемах и рекомендации по их устранению.
Дополнительные ресурсы
-
Ссылка на github.