---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/compose-multiplatform/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/ru/dev/compose-multiplatform/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/zh/dev/compose-multiplatform/adaptive-inline-banner.md
  - href: ru/dev/compose-multiplatform/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

<!--
Используется в Boost: boost/ru/ad-monetization/dev/compose-multiplatform
-->

# Адаптивный 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-баннер в приложение на Compose Multiplatform.
В дополнение к примерам кода и инструкции, оно также содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.

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

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

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

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

* Добавить в интерфейс composable `Banner` и передать `BannerAdSize.Inline` с шириной контейнера и максимальной высотой.
* Задать коллбэки жизненного цикла объявления через `BannerEvents`.

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

1. Создать состояние через `rememberBannerAdState()` с размером `BannerAdSize.Inline` (ширина и максимальная высота в `dp`). При необходимости передать `BannerEvents`.
2. Запустить загрузку вызовом `loadAd(AdRequest)` — обычно из `LaunchedEffect`, когда готовы идентификатор слота и размеры.
3. Передать состояние в `Banner` через параметр `state`.

Пример размещения на экране:

```kotlin
@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-баннера {#features}

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

2. Чтобы адаптивные inline-баннеры работали корректно, [сделайте макеты приложения адаптивными](https://kotlinlang.org/docs/multiplatform/compose-adaptive-layouts.html).

3. Адаптивные inline-баннеры лучше всего работают на полной доступной ширине. Чаще всего это ширина экрана устройства. Учитывайте отступы в приложении и безопасную зону экрана.

4. Значение `BannerAdSize.Inline(width, maxHeight)` задает параметры подбора размеров на стороне сервиса; фактическая высота после отрисовки может меняться между загрузками.

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

{% list tabs %}

- Android

  <!-- 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 -->

- iOS

  ### Использование демоблоков для тестирования рекламы

  <!-- source: ru/dev/_includes/test-ios-inline-banner.md -->
  Для проверки корректной интеграции рекламы и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.

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

  {% note warning %}

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

  {% endnote %}

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

  ### Проверка корректной интеграции рекламы

  <!-- source: ru/dev/_includes/test-integration-ios.md -->
  Проверить корректность интеграции рекламы можно через нативный инструмент Console.

  Чтобы получить возможность просматривать расширенные логи, необходимо вызвать метод `enableLogging` класса `YandexAds`.

  ```swift
  YandexAds.enableLogging()
  ```

  Для просмотра логов SDK в инструменте Console установите `Subsystem = com.mobile.ads.ads.sdk`. Вы можете фильтровать логи по категории и уровню ошибки.

  В случае обнаружения проблем при интеграции рекламы вы увидите подробный отчет о проблемах и рекомендации по их устранению.

  <img src= "https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/common/integration-ios-2.png">
  <!-- endsource: ru/dev/_includes/test-integration-ios.md -->

{% endlist %}

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

* <!-- source: ru/dev/_includes/github-pubdev-links.md -->
  Link to [GitHub](https://github.com/yandexmobile/yandex-ads-multiplatform).
  <!-- endsource: ru/dev/_includes/github-pubdev-links.md -->
