---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/android/compose/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/ru/dev/android/compose/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/zh/dev/android/compose/adaptive-inline-banner.md
  - href: ru/dev/android/compose/adaptive-inline-banner.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/ru/llms.txt

# Адаптивный inline-баннер

<!-- source: ru/dev/_includes/adaptive-inline-banner.md -->
Адаптивный inline-баннер — гибкий формат баннерной рекламы, обеспечивающий максимальную эффективность за счет оптимизации размера рекламы для каждого устройства.
<!-- endsource: ru/dev/_includes/adaptive-inline-banner.md -->

<!-- source: ru/dev/_includes/adaptive-inline-banner.md -->
Данный тип рекламы позволяет разработчикам указывать максимально допустимые ширину и высоту объявления, при этом оптимальный размер рекламы определяется автоматически. Чтобы выбрать лучший размер объявления, встроенные адаптивные баннеры используют максимальную, а не фиксированную высоту. Это позволяет повысить производительность.
<!-- endsource: ru/dev/_includes/adaptive-inline-banner.md -->

Как правило, такой формат используется в приложениях-лентах или там, где допустимо сфокусироваться на рекламе.

{% cut "Внешний вид" %}

<img src="https://yastatic.net/s3/doc-binary/src/docs/support/mobile-ads/ru/monetization/_images/banner-inline-ru-ex.png" width="200">

{% endcut %}

Это руководство покажет, как интегрировать адаптивный inline-баннер в Android‐приложение с помощью расширения Jetpack Compose. В дополнение к примерам кода и инструкции оно содержит рекомендации и ссылки на дополнительные ресурсы.

## Пререквизит {#pre}

<!-- source: ru/dev/_includes/pre-android.md -->
1. Выполните шаги по интеграции SDK, описанные в [Быстром старте](https://ads.yandex.com/helpcenter/ru/dev/android/quick-start.md).
2. Заранее [проинициализируйте](https://ads.yandex.com/helpcenter/ru/dev/android/quick-start.md#init) рекламный SDK.
3. Убедитесь, что используете [последнюю версию Yandex Mobile Ads SDK](https://ads.yandex.com/helpcenter/ru/dev/android/changelog-android.md), а в случае использования медиации — наиболее свежую [версию единой сборки](https://ads.yandex.com/helpcenter/ru/dev/android/changelog-android.md).
<!-- endsource: ru/dev/_includes/pre-android.md -->

<!-- source: ru/dev/_includes/pre-jetpack-compose.md -->
Для использования Compose-расширения добавьте зависимость в `build.gradle.kts`:

```kotlin
dependencies {
    implementation("com.yandex.android:mobileads:8.2.0")
    implementation("com.yandex.android:mobileads-compose:8.2.0")

    // Compose BOM (at least 2024.01.00)
    implementation(platform("androidx.compose:compose-bom:2025.03.00"))
}
```
<!-- endsource: ru/dev/_includes/pre-jetpack-compose.md -->

## Имплементация {#implement}

Основные шаги по интеграции адаптивного inline-баннера:

1. Использовать composable `Banner` с размером `BannerSize.Inline`.
2. При необходимости передать `BannerEvents` для отслеживания событий рекламы.

## Особенности подключения адаптивного inline-баннера {#features}

1. Все вызовы методов Yandex Mobile Ads SDK выполняйте из главного потока.

2. Чтобы видеореклама успешно отображалась на экране приложения, включите [аппаратное ускорение](https://developer.android.com/guide/topics/large-screens/support-different-screen-sizes). Аппаратное ускорение включено по умолчанию, но некоторые приложения его выключают. Если ваше приложение отключило аппаратное ускорение, рекомендуется включить его для классов активности, использующих рекламу.

3. Если вы получили ошибку в коллбэке `onAdFailedToLoad()`, не пытайтесь загрузить новое объявление снова. Если это необходимо сделать, ограничьте число повторных попыток загрузки рекламы, чтобы избежать неудачных запросов и проблем с подключением.

4. Чтобы адаптивные inline-баннеры работали правильно, [сделайте макеты приложения адаптивными](https://developer.android.com/guide/topics/large-screens/support-different-screen-sizes). Невыполнение этого требования может привести к некорректному отображению рекламы.

5. Адаптивные inline-баннеры работают лучше при использовании всей доступной ширины. В большинстве случаев это будет полная ширина экрана используемого устройства. Учитывайте применимые в приложении отступы (padding) и безопасные зоны (safe area) дисплея.

6. Адаптивный inline-баннер предназначен для размещения в прокручиваемом контенте. Баннер может быть такой же высоты, как экран устройства, или ограничен максимальной высотой, в зависимости от API.

7. Размер рекламы задается через `BannerSize.Inline(width, maxHeight)`, где ширина и максимальная высота указываются в dp через тип `Dp` (например, `320.dp`). Контекст для расчета разрешается внутри composable автоматически.

8. Состояние баннера создается через `rememberBannerAdState()`, загрузка выполняется явным вызовом `loadAd()`. Если `adSize` меняется — `BannerAdView` пересоздается автоматически.

## Правила отрисовки полноэкранного inline-баннера {#banner-assets}

<!-- source: ru/dev/_includes/banner-assets.md -->
1. Высота верхней некликабельной сейф-зоны 80 dp. Контролы внутри зоны могут быть кликабельны.

1. Размер визуального элемента (ассета) — не менее 32×32 dp. Это может быть значок закрытия или любой другой значок.

1. Кликабельная зона вокруг ассета — не менее 64×64 dp. Например, если ассет имеет размер 32×32 dp, то отступы вокруг него должны обеспечивать общую кликабельную область 64×64 dp.

1. Если контрол появляется не сразу, необходимо показывать таймер или шкалу прогресса до его появления.

{% cut "Пример" %}

![](../../../_images/common/banner-assets.png)

{% endcut %} 
<!-- endsource: ru/dev/_includes/banner-assets.md -->

## Загрузка и отображение рекламы {#load}

Для отображения inline-баннера создайте состояние через `rememberBannerAdState()` с размером `BannerSize.Inline`, затем передайте его в composable `Banner`. Загрузку запускайте явным вызовом `loadAd()`.

Для загрузки рекламы потребуется идентификатор рекламного места, полученный в интерфейсе Рекламной сети Яндекса.

Расширить параметры запроса за рекламой можно через `AdRequest.Builder()`. Для этого передайте в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Контекстные данные могут значительно улучшить качество рекламы. Подробнее читайте в разделе [Таргетирование рекламы](https://ads.yandex.com/helpcenter/ru/dev/android/target.md).

### Пример отображения адаптивного inline-баннера

После успешной загрузки баннер отобразится автоматически:

```kotlin
@Composable
fun MyScreen() {
    val bannerState = rememberBannerAdState(
        adSize = BannerSize.Inline(width = 320.dp, maxHeight = 400.dp),
    )

    LaunchedEffect(Unit) {
        bannerState.loadAd(AdRequest.Builder("your-ad-unit-id").build())
    }

    Banner(
        state = bannerState,
        modifier = Modifier.fillMaxWidth(),
    )
}
```

Для отслеживания событий рекламы передайте `BannerEvents` при создании состояния:

```kotlin
@Composable
fun MyScreen() {
    val bannerState = rememberBannerAdState(
        adSize = BannerSize.Inline(width = 320.dp, maxHeight = 400.dp),
        events = BannerEvents(
            onAdLoaded = { Log.d("YandexAds", "Баннер загружен") },
            onAdFailedToLoad = { error -> Log.e("YandexAds", error.description) },
            onAdClicked = { Log.d("YandexAds", "Клик по баннеру") },
            onImpression = { data -> Log.d("YandexAds", "Показ: ${data?.rawData}") },
        ),
    )

    LaunchedEffect(Unit) {
        bannerState.loadAd(AdRequest.Builder("your-ad-unit-id").build())
    }

    Banner(
        state = bannerState,
        modifier = Modifier.fillMaxWidth(),
    )
}
```

<!-- source: ru/dev/_includes/ad-attributes.md -->
Если вы размещаете рекламу через систему Adfox, после загрузки баннера данные `campaignId`, `bannerId` и `placeId` доступны из объектов `BannerAdView` через свойство `adAttributes` типа `AdAttributes`.
<!-- endsource: ru/dev/_includes/ad-attributes.md -->

## Тестирование интеграции адаптивного inline-баннера {#test}

<!-- source: ru/dev/_includes/test-android-inline-banner.md -->
### Использование демоблоков для тестирования рекламы {#demo-blocks}

Для проверки корректной интеграции адаптивного inline-баннера и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.

Демонстрационный adUnitId: `demo-banner-yandex`.

{% note warning %}

Убедитесь, что перед выкладыванием приложения в магазин вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.

{% endnote %}

Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе [Демоблоки для тестирования](https://ads.yandex.com/helpcenter/ru/dev/android/demo-blocks.md).

### Проверка корректной интеграции рекламы {#test-int}

Проверить корректность интеграции адаптивного inline-баннера можно через встроенный в SDK анализатор. Подробный отчет о проверке выведется в лог.

Для просмотра отчета, выполните поиск по ключевому слову YandexAds в инструменте отладки Android-приложений [Logcat](https://developer.android.com/studio/command-line/logcat).

```bash
adb logcat -v brief '*:S YandexAds'
```

В случае успешной интеграции вы увидите следующее сообщение:
```bash
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type banner was integrated successfully
```

В случае обнаружения проблем при интеграции баннерной рекламы вы получите подробный отчет о проблемах и рекомендации по их устранению.
<!-- endsource: ru/dev/_includes/test-android-inline-banner.md -->

## Дополнительные ресурсы {#resources}

* <!-- source: ru/dev/_includes/github-pubdev-links.md -->
  Ссылка на [github](https://github.com/yandexmobile/yandex-ads-sdk-android).
  <!-- endsource: ru/dev/_includes/github-pubdev-links.md -->
