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

Примечание

Пример работы всех типов форматов есть в демопроекте.

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

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

    YandexAds.initialize(this) {
        // Now you can use ads
    }
    
    YandexAds.initialize(this, () -> {
        // Now you can use ads
    });
    
  2. Создайте и сконфигурируйте объект загрузки рекламы AppOpenAdLoader.

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

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

    val appOpenAdLoader: AppOpenAdLoader = AppOpenAdLoader(application)
    val AD_UNIT_ID = "R-M-XXXXXX-Y" // для отладки можно использовать "demo-appopenad-yandex"
    val adRequest = AdRequest.Builder(AD_UNIT_ID).build()
    
    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();
    
  3. Установите слушатель методов обратного вызова AppOpenAdLoadListener для уведомления об успешной или неудачной загрузке рекламы.

    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.
       }
    }
    
    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.
        }
    };
    
  4. Загрузите рекламное объявление используя метод loadAd(AdRequest, AppOpenAdLoadListener).

     private fun loadAppOpenAd() {
        appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener)
     }
    
     private void loadAppOpenAd() {
         appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener);
     }
    
  5. Используйте LifecycleEventObserver для обработки изменения состояния приложения и показа рекламы во время его открытия.

    val processLifecycleObserver = DefaultProcessLifecycleObserver(
        onProcessCameForeground = ::showAppOpenAd
    )
    ProcessLifecycleOwner.get().lifecycle.addObserver(processLifecycleObserver)
    
    final DefaultProcessLifecycleObserver processLifecycleObserver = new DefaultProcessLifecycleObserver() {
        @Override
        public void onProcessCameForeground() {
            showAppOpenAd();
        }
    }
    
    ProcessLifecycleOwner.get().getLifecycle().addObserver(processLifecycleObserver);
    
  6. Перед показом объявления установите слушатель методов обратного вызова рекламного объявления AppOpenAdEventListener.

    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)
    
    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);
    }
    
  7. Покажите рекламу используя метод show.

    private fun showAppOpenAd() {
        appOpenAd?.show(activity)
    }
    
    private void showAppOpenAd() {
        if (mAppOpenAd != null) {
           mAppOpenAd.show(activity);
        }
    }
    
  8. Освободите ресурсы.

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

    private fun clearAppOpenAd() {
        appOpenAd?.setAdEventListener(null)
        appOpenAd = null
    }
    
    private void clearAppOpenAd() {
        if (mAppOpenAd != null) {
            mAppOpenAd.setAdEventListener(null);
            mAppOpenAd = null;
        }
    }
    

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

Соберите и запустите проект. Успешную интеграцию SDK можно проверить в Logcat по ключевому слову YandexAds:

[Integration] Ad type App Open was integrated successfully