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


[//]: # (Эта страница переводится также на бразильский португальский — pt-BR)

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

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

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

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


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

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

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

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

1. Создать загрузчик рекламы `InterstitialAdLoader`.
2. Загрузить рекламу вызовом метода `InterstitialAdLoader.LoadAd(AdRequest)` — через `async/await` или с колбэками.
3. Передать [дополнительные настройки](https://ads.yandex.com/helpcenter/ru/dev/unity/target-adfox.md), если вы работаете через систему Adfox.
4. Зарегистрировать обработчики событий взаимодействия пользователя с рекламным объявлением.
5. Показать объявление вызовом метода `Interstitial.Show()`.
6. Освободить ресурсы.

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

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

2. Рекомендуется использовать один инстанс `InterstitialAdLoader` для всех загрузок рекламных объявлений для улучшения производительности.

## Пошаговая инструкция

1. Создайте объект `InterstitialAdLoader` в скрипте (на C#), который прикреплен к `GameObject`.

   ```c#
   using UnityEngine;
   using YandexMobileAds;
   using YandexMobileAds.Base;

   public class YandexMobileAdsInterstitialDemoScript : MonoBehaviour
   {
       private InterstitialAdLoader interstitialAdLoader;
       private Interstitial interstitial;

       private void SetupLoader()
       {
           interstitialAdLoader = new InterstitialAdLoader();
           // ...
       }
   }
   ```

2. Загрузите рекламу вызовом метода `LoadAd`.

   {% list tabs %}

   - async/await

     ```c#
     private async void RequestInterstitial()
     {
         string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
         try
         {
             interstitial = await interstitialAdLoader.LoadAd(new AdRequest(adUnitId));
         }
         catch (AdLoadingException e)
         {
             // Ad failed to load with {e.Message}
             // Attempting to load a new ad from catch block is strongly discouraged.
         }
     }
     ```

   - Callbacks

     ```c#
     private void RequestInterstitial()
     {
         string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
         AdRequest adRequest = new AdRequest(adUnitId);
         interstitialAdLoader.LoadAd(
             adRequest: adRequest,
             onLoaded: interstitial => {
                 // The ad was loaded successfully. Now you can handle it.
                 this.interstitial = interstitial;
             },
             onFailed: args => {
                 // Ad failed to load with {args.Message}
                 // Attempting to load a new ad from the onFailed callback is strongly discouraged.
             });
     }
     ```

   {% endlist %}

   `adUnitId` — уникальный идентификатор, который выдается в интерфейсе Рекламной сети Яндекса и имеет следующий вид: R-M-XXXXXX-Y.

   {% note tip %}

   Для тестирования можете использовать ID демо блока: "demo-interstitial-yandex". Перед публикацией приложения обязательно замените его на ID настоящего рекламного блока.

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

   {% endnote %}

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

   ```c#
   using System;

   // ...
   interstitial.OnAdClicked += HandleAdClicked;
   interstitial.OnAdShown += HandleInterstitialShown;
   interstitial.OnAdFailedToShow += HandleInterstitialFailedToShow;
   interstitial.OnAdImpression += HandleImpression;
   interstitial.OnAdDismissed += HandleInterstitialDismissed;
   // ...

   public void HandleAdClicked(object sender, EventArgs args)
   {
       // Called when a click is recorded for an ad.
   }

   public void HandleInterstitialShown(object sender, EventArgs args)
   {
       // Called when ad is shown.
   }

   public void HandleInterstitialFailedToShow(object sender, AdFailureEventArgs args)
   {
       // Called when an InterstitialAd failed to show.
   }

   public void HandleInterstitialDismissed(object sender, EventArgs args)
   {
       // Called when ad is dismissed.
   }

   public void HandleImpression(object sender, ImpressionData impressionData)
   {
       // Called when an impression is recorded for an ad.
   }
   ```

4. Покажите объявление вызовом метода `Show()` объекта `Interstitial`.

   ```c#
   if (interstitial != null)
   {
       interstitial.Show();
   }
   ```

5. Вызывайте `Destroy()` у отработанных объявлений и очищайте ссылки, если они больше не используются на этом экране.

   Это освобождает используемые ресурсы и предотвращает утечки памяти.

   ```c#
   public void DestroyInterstitial()
   {
       if (interstitial != null)
       {
           interstitial.Destroy();
           interstitial = 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 -->

Вы можете вызвать загрузку в методе `Awake` для `gameObject`. При этом важно сохранить объект между сценами, с помощью вызова `DontDestroyOnLoad()`, для того чтобы загруженное объявление не удалялось вместе с `gameObject` при смене сцен.

```c#
private void Awake()
{
    SetupLoader();
    RequestInterstitial();
    DontDestroyOnLoad(gameObject);
}
```

При этом к функциям обратного вызова на завершение показа или ошибки показа можно привязать загрузку следующего рекламного объявления. Например так:

```c#
public void HandleInterstitialFailedToShow(object sender, EventArgs args)
{
    // Called when an InterstitialAd failed to show.

    // Clear resources after Ad dismissed.
    DestroyInterstitial();

    // Now you can preload the next interstitial ad.
    RequestInterstitial();
}

public void HandleInterstitialDismissed(object sender, EventArgs args)
{
    // Called when ad is dismissed.

    // Clear resources after Ad dismissed.
    DestroyInterstitial();

    // Now you can preload the next interstitial ad.
    RequestInterstitial();
}
```

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

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

### Полный пример кода

{% list tabs %}

- async/await

  ```c#
  using System;
  using UnityEngine;
  using UnityEngine.UI;
  using YandexMobileAds;
  using YandexMobileAds.Base;

  public class YandexMobileAdsInterstitialDemoScript : MonoBehaviour
  {
      private InterstitialAdLoader interstitialAdLoader;
      private Interstitial interstitial;
      [SerializeField] private Button button;

      private void Awake()
      {
          SetupLoader();
          RequestInterstitial();
          DontDestroyOnLoad(gameObject);
          button = this.GetComponent<Button>();
          button.onClick.AddListener(ShowInterstitial);
      }

      private void SetupLoader()
      {
          interstitialAdLoader = new InterstitialAdLoader();
      }

      private async void RequestInterstitial()
      {
          string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
          try
          {
              interstitial = await interstitialAdLoader.LoadAd(new AdRequest(adUnitId));

              // Add events handlers for ad actions
              interstitial.OnAdClicked += HandleAdClicked;
              interstitial.OnAdShown += HandleInterstitialShown;
              interstitial.OnAdFailedToShow += HandleInterstitialFailedToShow;
              interstitial.OnAdImpression += HandleImpression;
              interstitial.OnAdDismissed += HandleInterstitialDismissed;
          }
          catch (AdLoadingException e)
          {
              // Ad failed to load with {e.Message}
              // Attempting to load a new ad from catch block is strongly discouraged.
          }
      }

      private void ShowInterstitial()
      {
          if (interstitial != null)
          {
              interstitial.Show();
          }
      }

      public void HandleInterstitialDismissed(object sender, EventArgs args)
      {
          // Called when ad is dismissed.

          // Clear resources after Ad dismissed.
          DestroyInterstitial();

          // Now you can preload the next interstitial ad.
          RequestInterstitial();
      }

      public void HandleInterstitialFailedToShow(object sender, EventArgs args)
      {
          // Called when an InterstitialAd failed to show.

          // Clear resources after Ad dismissed.
          DestroyInterstitial();

          // Now you can preload the next interstitial ad.
          RequestInterstitial();
      }

      public void HandleAdClicked(object sender, EventArgs args)
      {
          // Called when a click is recorded for an ad.
      }

      public void HandleInterstitialShown(object sender, EventArgs args)
      {
          // Called when ad is shown.
      }

      public void HandleImpression(object sender, ImpressionData impressionData)
      {
          // Called when an impression is recorded for an ad.
      }

      public void DestroyInterstitial()
      {
          if (interstitial != null)
          {
              interstitial.Destroy();
              interstitial = null;
          }
      }
  }
  ```

- Callbacks

  ```c#
  using System;
  using UnityEngine;
  using UnityEngine.UI;
  using YandexMobileAds;
  using YandexMobileAds.Base;

  public class YandexMobileAdsInterstitialDemoScript : MonoBehaviour
  {
      private InterstitialAdLoader interstitialAdLoader;
      private Interstitial interstitial;
      [SerializeField] private Button button;

      private void Awake()
      {
          SetupLoader();
          RequestInterstitial();
          DontDestroyOnLoad(gameObject);
          button = this.GetComponent<Button>();
          button.onClick.AddListener(ShowInterstitial);
      }

      private void SetupLoader()
      {
          interstitialAdLoader = new InterstitialAdLoader();
      }

      private void RequestInterstitial()
      {
          string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
          AdRequest adRequest = new AdRequest(adUnitId);
          interstitialAdLoader.LoadAd(
              adRequest: adRequest,
              onLoaded: HandleInterstitialLoaded,
              onFailed: HandleInterstitialFailedToLoad);
      }

      private void ShowInterstitial()
      {
          if (interstitial != null)
          {
              interstitial.Show();
          }
      }

      public void HandleInterstitialLoaded(Interstitial interstitial)
      {
          // The ad was loaded successfully. Now you can handle it.
          this.interstitial = interstitial;

          // Add events handlers for ad actions
          this.interstitial.OnAdClicked += HandleAdClicked;
          this.interstitial.OnAdShown += HandleInterstitialShown;
          this.interstitial.OnAdFailedToShow += HandleInterstitialFailedToShow;
          this.interstitial.OnAdImpression += HandleImpression;
          this.interstitial.OnAdDismissed += HandleInterstitialDismissed;
      }

      public void HandleInterstitialFailedToLoad(AdFailedToLoadEventArgs args)
      {
          // Ad failed to load with {args.Message}
          // Attempting to load a new ad from the onFailed callback is strongly discouraged.
      }

      public void HandleInterstitialDismissed(object sender, EventArgs args)
      {
          // Called when ad is dismissed.

          // Clear resources after Ad dismissed.
          DestroyInterstitial();

          // Now you can preload the next interstitial ad.
          RequestInterstitial();
      }

      public void HandleInterstitialFailedToShow(object sender, EventArgs args)
      {
          // Called when an InterstitialAd failed to show.

          // Clear resources after Ad dismissed.
          DestroyInterstitial();

          // Now you can preload the next interstitial ad.
          RequestInterstitial();
      }

      public void HandleAdClicked(object sender, EventArgs args)
      {
          // Called when a click is recorded for an ad.
      }

      public void HandleInterstitialShown(object sender, EventArgs args)
      {
          // Called when ad is shown.
      }

      public void HandleImpression(object sender, ImpressionData impressionData)
      {
          // Called when an impression is recorded for an ad.
      }

      public void DestroyInterstitial()
      {
          if (interstitial != null)
          {
              interstitial.Destroy();
              interstitial = null;
          }
      }
  }
  ```

{% endlist %}

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

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