---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/easy/integration/android/formats/app-open-ads.md
  - https://ads.yandex.com/helpcenter/ru/easy/integration/android/formats/app-open-ads.md
  - https://ads.yandex.com/helpcenter/zh/easy/integration/android/formats/app-open-ads.md
  - href: ru/easy/integration/android/formats/app-open-ads.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

# Реклама при открытии приложения

<!-- source: ru/easy/_includes/notes-android-easy-guide.md -->
{% note info %}

Пример работы всех типов форматов есть в [демопроекте](https://ads.yandex.com/helpcenter/ru/easy/integration/android/testing.md#demo).

{% endnote %}
<!-- endsource: ru/easy/_includes/notes-android-easy-guide.md -->


## Пример создания рекламы при открытии приложения

1. Инициализируйте SDK на старте работы приложения.

   {% list tabs %}

   - Kotlin

     ```kotlin
     YandexAds.initialize(this) {
         // Now you can use ads
     }
     ```

   - Java

     ```java
     YandexAds.initialize(this, () -> {
         // Now you can use ads
     });
     ```

   {% endlist %}

2. Создайте и сконфигурируйте объект загрузки рекламы `AppOpenAdLoader`.

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

   Расширить параметры запроса за рекламой можно через `AdRequest.Builder()`, передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы.

   {% list tabs %}

   - Kotlin

     ```kotlin
     val appOpenAdLoader: AppOpenAdLoader = AppOpenAdLoader(application)
     val AD_UNIT_ID = "R-M-XXXXXX-Y" // для отладки можно использовать "demo-appopenad-yandex"
     val adRequest = AdRequest.Builder(AD_UNIT_ID).build()
     ```

   - Java

     ```java
     final AppOpenAdLoader appOpenAdLoader = AppOpenAdLoader(application);
     final String AD_UNIT_ID = "R-M-XXXXXX-Y"; // для отладки можно использовать "demo-appopenad-yandex"
     final AdRequest adRequest = new AdRequest.Builder(AD_UNIT_ID).build();
     ```

   {% endlist %}

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

   {% list tabs %}

   - Kotlin

     ```kotlin
     val appOpenAdLoadListener = object : AppOpenAdLoadListener {
        override fun onAdLoaded(appOpenAd: AppOpenAd) {
            // The ad was loaded successfully. Now you can show loaded ad.
            this@Activity.appOpenAd = appOpenAd
        }

        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
     AppOpenAdLoadListener appOpenAdLoadListener = new AppOpenAdLoadListener() {
         @Override
         public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) {
             // The ad was loaded successfully. Now you can show loaded ad.
             mAppOpenAd = appOpenAd;
         }

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

4. Загрузите рекламное объявление используя метод `loadAd(AdRequest, AppOpenAdLoadListener)`.

   {% list tabs %}

   - Kotlin

     ```kotlin
      private fun loadAppOpenAd() {
         appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener)
      }
      ```

   - Java

     ```java
      private void loadAppOpenAd() {
          appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener);
      }
      ```

   {% endlist %}

5. Используйте `LifecycleEventObserver` для обработки изменения состояния приложения и показа рекламы во время его открытия.

   {% list tabs %}

   - Kotlin

     ```kotlin
     val processLifecycleObserver = DefaultProcessLifecycleObserver(
         onProcessCameForeground = ::showAppOpenAd
     )
     ProcessLifecycleOwner.get().lifecycle.addObserver(processLifecycleObserver)
     ```

   - Java

     ```java
     final DefaultProcessLifecycleObserver processLifecycleObserver = new DefaultProcessLifecycleObserver() {
         @Override
         public void onProcessCameForeground() {
             showAppOpenAd();
         }
     }

     ProcessLifecycleOwner.get().getLifecycle().addObserver(processLifecycleObserver);
     ```

   {% endlist %}

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

   {% list tabs %}

   - Kotlin

     ```kotlin
     private inner class AdEventListener : AppOpenAdEventListener {
         override fun onAdShown() {
             // Called when ad is shown.
         }

         override fun onAdFailedToShow(adError: AdError) {
             // Called when ad failed to show.
         }

         override fun onAdDismissed() {
             // Called when ad is dismissed.
             // Clean resources after dismiss and preload new ad.
             clearAppOpenAd()
             loadAppOpenAd()
         }

         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.
             // Get Impression Level Revenue Data in argument.
         }
     }

     private val appOpenAdEventListener = AdEventListener()
     appOpenAd?.setAdEventListener(appOpenAdEventListener)
     ```

   - Java

     ```java
     AppOpenAdEventListener appOpenAdEventListener = new AppOpenAdEventListener() {
        @Override
        public void onAdShown() {
            // Called when ad is shown.
        }

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

        @Override
        public void onAdDismissed() {
            // Called when ad is dismissed.
            // Clean resources after dismiss and preload new ad.
            clearAppOpenAd();
            loadAppOpenAd();
        }

        @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.
        }
     };

     if (mAppOpenAd != null) {
        mAppOpenAd.setAdEventListener(appOpenAdEventListener);
     }
     ```

   {% endlist %}

7. Покажите рекламу используя метод `show`.

   {% list tabs %}

   - Kotlin

     ```kotlin
     private fun showAppOpenAd() {
         appOpenAd?.show(activity)
     }
     ```

   - Java

     ```java
     private void showAppOpenAd() {
         if (mAppOpenAd != null) {
            mAppOpenAd.show(activity);
         }
     }
     ```

   {% endlist %}

8. Освободите ресурсы.

   Это необходимо для предотвращения утечек памяти.

   {% list tabs %}

   - Kotlin

     ```kotlin
     private fun clearAppOpenAd() {
         appOpenAd?.setAdEventListener(null)
         appOpenAd = null
     }
     ```

   - Java

     ```java
     private void clearAppOpenAd() {
         if (mAppOpenAd != null) {
             mAppOpenAd.setAdEventListener(null);
             mAppOpenAd = null;
         }
     }
     ```

   {% endlist %}

## Проверка интеграции

<!-- source: ru/easy/_includes/notes-android-easy-guide.md -->
Соберите и запустите проект. Успешную интеграцию SDK можно проверить в **Logcat** по ключевому слову `YandexAds`:
<!-- endsource: ru/easy/_includes/notes-android-easy-guide.md -->

```
[Integration] Ad type App Open was integrated successfully
```
