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

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

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

Это руководство покажет, как интегрировать межстраничную рекламу во Flutter-приложение.
В дополнение к примерам кода и инструкции, оно также содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.


Дополнительно об интеграции межстраничной рекламы смотрите в видео:

@[](https://runtime.strm.yandex.ru/player/video/vplvtzfnlys444spmd6j?autoplay=0&mute=0)


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

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

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

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

* Создать и настроить загрузчик рекламы `InterstitialAdLoader`.
* Загрузить рекламу `InterstitialAd`.
* Зарегистрировать слушатель методов обратного вызова рекламного объявления `InterstitialAdEventListener`.
* Показать объявление `InterstitialAd`.

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

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

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

Для загрузки межстраничной рекламы необходимо создать объект `InterstitialAdLoader`.

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

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

В следующем примере показано, как загрузить межстраничное объявление:

```dart
final _adLoader = InterstitialAdLoader();
InterstitialAd? _ad;

@override
void initState() {
  super.initState();
  YandexAds.initialize();
  _loadInterstitialAd();
}

Future<void> _loadInterstitialAd() async {
  try {
    _ad = await _adLoader.loadAd(
      adRequest: AdRequest(adUnitId: 'R-M-XXXXXX-Y'), // For debugging, you can use 'demo-interstitial-yandex'
    );
  } on AdRequestError catch (error) {
    // Ad failed to load with AdRequestError.
    // Attempting to load a new ad from the error handler is strongly discouraged.
  }
}
```

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

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

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

Чтобы показать межстраничное объявление, используйте метод `show()`, чтобы дождаться окончания просмотра используйте метод `waitForDismiss()`:

```dart
_showAd() async {
  _ad?.setAdEventListener(
      eventListener: InterstitialAdEventListener(
    onAdShown: () {
      // Called when ad is shown.
    },
    onAdFailedToShow: (error) {
      // Called when an InterstitialAd failed to show.
      // Destroy the ad so you don't show the ad a second time.
      _ad?.destroy();
      _ad = null;

      // Now you can preload the next interstitial ad.
      _loadInterstitialAd();
    },
    onAdClicked: () {
      // Called when a click is recorded for an ad.
    },
    onAdDismissed: () {
      // Called when ad is dismissed.
      // Destroy the ad so you don't show the ad a second time.
      _ad?.destroy();
      _ad = null;

      // Now you can preload the next interstitial ad.
      _loadInterstitialAd();
    },
    onAdImpression: (impressionData) {
      // Called when an impression is recorded for an ad.
    },
  ));
  await _ad?.show();
  await _ad?.waitForDismiss();
}
```

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

Вызывайте метод `destroy()` для отработанных объявлений. Это освобождает используемые ресурсы и предотвращает утечки памяти.

Не храните ссылки на отработанные объявления.

Эти действия можно осуществить по методу обатного вызова `onAdDismissed`:

```dart
_ad?.setAdEventListener(
    eventListener: InterstitialAdEventListener(
        //...
        onAdDismissed: () {
          _ad?.destroy();
          _ad = null;
        },
        //...
    ));
```

## Тестирование интеграции межстраничной рекламы {#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 -->

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

Чтобы начать загрузку следующего объявления сразу после показа текущего, вы можете связать этот процесс с событием `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 -->
  Ссылка на [pub.dev](https://pub.dev/packages/yandex_mobileads/example).
  <!-- endsource: ru/dev/_includes/github-pubdev-links.md -->
