---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/android/interstitial.md
  - https://ads.yandex.com/helpcenter/pt/dev/android/interstitial.md
  - https://ads.yandex.com/helpcenter/ru/dev/android/interstitial.md
  - https://ads.yandex.com/helpcenter/zh/dev/android/interstitial.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/ru/llms.txt


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

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

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

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

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


## Пререквизит {#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 -->

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

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

* Создать и настроить загрузчик рекламы `InterstitialAdLoader`.
* Зарегистрировать слушатель методов обратного вызова загрузки `InterstitialAdLoadListener`.
* Загрузить рекламу.
* Передать [дополнительные настройки](https://ads.yandex.com/helpcenter/ru/dev/android/target-adfox.md), если вы работаете через систему Adfox.
* Зарегистрировать слушатель методов обратного вызова событий рекламного объявления `InterstitialAdEventListener`.
* Показать объявление `InterstitialAd`.

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

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

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

3. Рекомендуется держать сильную ссылку на загрузчик и рекламу на всем протяжении жизни экрана, в рамках которого происходит взаимодействие с рекламой, для избежания очистки сборщиком мусора.

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

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

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

Для этого потребуется Activity или Application context.

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

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

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

После загрузки рекламного объявления (вызов метода `onAdLoaded(interstitialAd: InterstitialAd)`) сохраните ссылку на загруженную рекламу `InterstitialAd` до окончания показа.

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

{% list tabs %}

   - Kotlin

     ```kotlin
     class InterstitialAdActivity : AppCompatActivity(R.layout.activity_interstitial_ad) {
         private var interstitialAd: InterstitialAd? = null
         private var interstitialAdLoader: InterstitialAdLoader? = null
         private lateinit var binding: ActivityInterstitialAdBinding

         override fun onCreate(savedInstanceState: Bundle?) {
             super.onCreate(savedInstanceState)
             binding = ActivityInterstitialAdBinding.inflate(layoutInflater)
             setContentView(binding.root)

             // Interstitial ads loading should occur after initialization of the SDK.
             // Initialize SDK as early as possible, for example in Application.onCreate or Activity.onCreate
             interstitialAdLoader = InterstitialAdLoader(this)
             loadInterstitialAd()
         }

         private fun loadInterstitialAd() {
             val adRequest = AdRequest.Builder("your-ad-unit-id").build()
             interstitialAdLoader?.loadAd(adRequest, object : InterstitialAdLoadListener {
                 override fun onAdLoaded(ad: InterstitialAd) {
                     interstitialAd = ad
                     // The ad was loaded successfully. Now you can show loaded ad.
                 }

                 override fun onAdFailedToLoad(adRequestError: AdRequestError) {
                     // Ad failed to load with AdRequestError.
                     // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
                 }
             })
         }
     }
     ```

   - Java

     ```java
     public class InterstitialAdActivity extends AppCompatActivity {
         @Nullable
         private InterstitialAd mInterstitialAd = null;
         @Nullable
         private InterstitialAdLoader mInterstitialAdLoader = null;
         private ActivityInterstitialAdBinding mBinding;

         public InterstitialAdActivity() {
             super(R.layout.activity_interstitial_ad);
         }

         @Override
         protected void onCreate(@Nullable Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             mBinding = ActivityInterstitialAdBinding.inflate(getLayoutInflater());
             setContentView(mBinding.getRoot());

             // Interstitial ads loading should occur after initialization of the SDK.
             // Initialize SDK as early as possible, for example in Application.onCreate or Activity.onCreate
             mInterstitialAdLoader = new InterstitialAdLoader(this);
             loadInterstitialAd();
         }

         private void loadInterstitialAd() {
             if (mInterstitialAdLoader != null) {
                 final AdRequest adRequest =
                     new AdRequest.Builder("your-ad-unit-id").build();
                 mInterstitialAdLoader.loadAd(adRequest, new InterstitialAdLoadListener() {
                     @Override
                     public void onAdLoaded(@NonNull final InterstitialAd interstitialAd) {
                         mInterstitialAd = interstitialAd;
                         // The ad was loaded successfully. Now you can show loaded ad.
                     }

                     @Override
                     public void onAdFailedToLoad(@NonNull final AdRequestError adRequestError) {
                         // Ad failed to load with AdRequestError.
                         // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
                     }
                 });
             }
         }
     }
     ```
{% endlist %}

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

## Показ объявления {#ad-view}

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

Перед показом объявления установите слушатель методов обратного вызова рекламного объявления `InterstitialAdEventListener`.

Для показа рекламного объявления потребуется передать Activity в метод show загруженного рекламного объявления:

{% list tabs %}

   - Kotlin

     ```kotlin
     private fun showAd() {
         interstitialAd?.apply {
             setAdEventListener(object : InterstitialAdEventListener {
                 override fun onAdShown() {
                     // Called when ad is shown.
                 }
                 override fun onAdFailedToShow(adError: AdError) {
            	     // Called when an InterstitialAd failed to show.
                     // Clean resources after Ad dismissed
                     interstitialAd?.setAdEventListener(null)
                     interstitialAd = null

                     // Now you can preload the next interstitial ad.
                     loadInterstitialAd()
                 }
                 override fun onAdDismissed() {
                     // Called when ad is dismissed.
                     // Clean resources after Ad dismissed
                     interstitialAd?.setAdEventListener(null)
                     interstitialAd = null

                     // Now you can preload the next interstitial ad.
                     loadInterstitialAd()
                }
                 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.
                 }
             })
             show(this@Activity)
         }
     }
     ```

   - Java

     ```java
     private void showAd() {
         if (mInterstitialAd != null) {
             mInterstitialAd.setAdEventListener(new InterstitialAdEventListener() {
                 @Override
                 public void onAdShown() {
                     // Called when ad is shown.
                 }

                 @Override
                 public void onAdFailedToShow(@NonNull final AdError adError) {
                     // Called when an InterstitialAd failed to show.
                 }

                 @Override
                 public void onAdDismissed() {
                     // Called when ad is dismissed.
                     // Clean resources after Ad dismissed
                     if (mInterstitialAd != null) {
                         mInterstitialAd.setAdEventListener(null);
                         mInterstitialAd = null;
                     }

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

                 @Override
                 public void onAdClicked() {
                     // Called when a click is recorded for an ad.
                 }

                 @Override
                 public void onAdImpression(@Nullable final ImpressionData impressionData) {
                     // Called when an impression is recorded for an ad.
                 }
             });
             mInterstitialAd.show(this);
         }
     }
     ```
{% endlist %}

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

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

{% list tabs %}

   - Kotlin

     ```kotlin
     override fun onDestroy() {
         super.onDestroy()
         interstitialAdLoader = null
         destroyInterstitialAd()
     }

     private fun destroyInterstitialAd() {
         interstitialAd?.setAdEventListener(null)
         interstitialAd = null
     }
     ```

   - Java

     ```java
     @Override
     protected void onDestroy() {
         super.onDestroy();
         mInterstitialAdLoader = null;
         destroyInterstitialAd();
     }

     private void destroyInterstitialAd() {
         if (mInterstitialAd != null) {
             mInterstitialAd.setAdEventListener(null);
             mInterstitialAd = null;
         }
     }
     ```
{% endlist %}

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

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

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