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

# Межстраничная реклама

<!-- source: ru/dev/_includes/interstitial.md -->
Межстраничная реклама (interstitial) — полноэкранный формат рекламы, встраиваемый в контент приложения во время естественных пауз, таких как переход между уровнями игры или окончание выполнения целевого действия.
<!-- endsource: ru/dev/_includes/interstitial.md -->

Когда приложение показывает межстраничное объявление, у пользователя есть выбор: либо нажать на объявление и перейти на сайт рекламодателя, либо закрыть рекламу и вернуться в приложение.

В межстраничной рекламе внимание пользователя полностью сконцентрировано на рекламе, за счет чего стоимость ее показа выше.

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

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

{% endcut %}

Это руководство покажет, как интегрировать межстраничную рекламу в приложение на 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}

Основные шаги по интеграции межстраничных объявлений:

1. Создайте загрузчик рекламы с помощью `rememberInterstitialAdLoader()`.
2. Загрузить рекламу через suspend-функцию `loadAd()`.
3. При необходимости установите `InterstitialAdEventListener` на загруженное объявление перед вызовом `show()`.
4. Покажите рекламу используя метод `show()`.

## Особенности подключения межстраничной рекламы {#features}

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

## Загрузка рекламы

Создайте загрузчик через `rememberInterstitialAdLoader()`, затем вызовите `loadAd` с `AdRequest`, в котором указан `adUnitId` из интерфейса Рекламной сети Яндекса.

Запрос расширяйте через `AdRequest` (`targeting`, `parameters`, `preferredTheme` и т. д.). Дополнительный контекст в запросе заметно улучшает качество рекламы. Подробнее — в разделе [Таргетирование рекламы](https://ads.yandex.com/helpcenter/ru/dev/compose-multiplatform/target.md).

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

```kotlin
@Composable
fun InterstitialBlock(adUnitId: String) {
    val loader = rememberInterstitialAdLoader()
    val scope = rememberCoroutineScope()
    var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
    var isLoading by remember { mutableStateOf(false) }

    Button(
        onClick = {
            isLoading = true
            scope.launch {
                try {
                    interstitialAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
                } catch (e: AdLoadException) {
                    // Ошибка загрузки: e.error (AdRequestError). Повтор без ограничений не рекомендуется.
                }
                isLoading = false
            }
        },
        enabled = !isLoading,
    ) {
        Text(if (isLoading) "Загрузка..." else "Загрузить межстраничную")
    }

    Button(
        onClick = {
            interstitialAd?.show()
            interstitialAd = null
        },
        enabled = interstitialAd != null,
    ) {
        Text("Показать межстраничную")
    }
}
```

Для отладки в качестве `adUnitId` можно использовать `'demo-interstitial-yandex'`.

## Показ объявления

Межстраничную рекламу показывайте в естественных паузах работы приложения — например, между уровнями игры или после целевого действия (когда файл догрузился).

Чтобы отслеживать жизненный цикл, перед `show()` установите на экземпляр `InterstitialAd` слушатель `InterstitialAdEventListener`.

```kotlin
val ad = interstitialAd ?: return
ad.setAdEventListener(
    object : InterstitialAdEventListener {
        override fun onAdShown() {
            // Called when an ad is shown.
        }

        override fun onAdFailedToShow(adError: AdError) {
            // Called when an ad failed to show. Clear the reference and preload the next ad if needed.
        }

        override fun onAdDismissed() {
            // Called when ad is dismissed. Preload the next interstitial here if appropriate.
        }

        override fun onAdClicked() {
            // Called when a click is recorded for an ad.
        }

        override fun onAdImpression(impressionData: ImpressionData?) {
            // Called when an impression is recorded for an ad.
        }
    },
)
ad.show()
```

## Освобождение ресурсов

После `onAdDismissed` или `onAdFailedToShow` сбрасывайте ссылки на объект объявления и при необходимости начинайте загрузку следующего креатива. Не держите сильные ссылки на уже показанные объявления.

## Тестирование интеграции межстраничной рекламы {#test}

{% list tabs %}

- Android

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

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

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

   {% note warning %}

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

   {% endnote %}

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

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

   Проверить корректность интеграции межстраничной рекламы можно через встроенный в 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 interstitial was integrated successfully
   ```

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

- iOS

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

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

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

   {% note warning %}

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

   {% endnote %}

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

## Советы

### Предзагрузка объявления

<!-- source: ru/dev/_includes/preload.md -->
Загрузка рекламного объявления может занимать до нескольких секунд в зависимости от количества подключенных рекламных сетей в мобильной медиации и скорости соединения пользователя. Рекомендуется предзагружать рекламные объявления перед показом.
<!-- endsource: ru/dev/_includes/preload.md -->

Вызывайте `loadAd` заранее и в нужный момент сразу показывайте загруженное объявление.

Чтобы начать загрузку следующего объявления сразу после показа текущего, свяжите этот процесс с событием `onAdDismissed`.

<!-- source: ru/dev/_includes/cash-ads.md -->
Избыточное кеширование объявлений на экранах, которые вряд ли будут показаны, может снизить эффективность рекламы. Например, если в среднем пользователи проходят 2–3 уровня игры за раз, не стоит кешировать объявления для 6–7 экранов. Так видимость рекламы снизится, и рекламная система может деприоритизировать приложение.

Чтобы кеширование работало на пользу приложения, обращайте внимание на метрику «Доля показов» или «Доля видимых показов» в интерфейсе Рекламной сети Яндекса. Если она ниже 20%, это повод задуматься над изменением алгоритма кеширования. Чем доля показов выше, тем лучше.
<!-- endsource: ru/dev/_includes/cash-ads.md -->

## Дополнительные ресурсы {#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 -->
