Загрузка и показ рекламных объявлений

Внимание.

Это архивная версия документации. Актуальная документация по всем платформам находится здесь.

  1. Подготовка к работе
  2. Загрузка рекламных объявлений
  3. Показ рекламных объявлений
  4. Загрузка нескольких рекламных объявлений

Загрузка рекламных объявлений

  1. Создайте экземпляр класса NativeAdLoader для получения нативных рекламных объявлений.

  2. Создайте конфигурацию запроса nativeAdRequestConfiguration с помощью класса NativeAdRequestConfiguration.Builder. В качестве параметров запроса можно передать идентификатор рекламного блока, способ загрузки изображений, возраст, гендерные признаки и другие данные, способные улучшить качество подбора рекламы.

  3. Для получения уведомлений (успешная загрузка рекламы или ошибка при загрузке рекламы), создайте экземпляр NativeAdLoadListener и установите его в качестве слушателя событий загрузчика рекламных объявлений.

  4. Запустите процесс загрузки рекламы.

Если на блоке включены медиа форматы рекламы, следует запрашивать рекламу с указанием размеров контейнера.

Общий запрос за рекламой
final NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
    nativeAdLoader.setNativeAdLoadListener(new NativeAdLoadListener() {
        @Override
        public void onAdLoaded(@NonNull final NativeAd nativeAd) {
            //bind nativeAd
        }
                            
        @Override
        public void onAdFailedToLoad(@NonNull final AdRequestError error) {
            //log error
        }
    });
                            
final NativeAdRequestConfiguration nativeAdRequestConfiguration = 
    new NativeAdRequestConfiguration.Builder(AdUnitId).build();
nativeAdLoader.loadAd(nativeAdRequestConfiguration);
Совет.

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

Примеры с демонстрационным AdUnit ID

Чтобы посмотреть, как реклама будет отображаться в приложении, используйте демонстрационный AdUnit ID:
YANDEX_AD_UNIT_ID = "demo-native-content-yandex"
ADMOB_AD_UNIT_ID = "demo-native-content-admob"
MYTARGET_AD_UNIT_ID = "demo-native-content-mytarget"
STARTAPP_AD_UNIT_ID = "demo-native-content-startapp"

Показ рекламных объявлений

После окончания загрузки рекламы, все ее компоненты необходимо отобразить. Список доступных в объявлении компонентов можно получить из объекта рекламы NativeAd.

Существует два способа настройки внешнего оформления рекламы:

Оформление с помощью шаблона

Пример шаблона нативной рекламы

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

В шаблоне уже добавлен весь набор необходимых рекламных компонентов и настроено их расположение относительно друг друга. Шаблон работает с любым поддерживаемым типом нативной рекламы.

final NativeBannerView nativeBannerView = new NativeBannerView(this);
nativeBannerView.setAd(nativeAd);

Шаблон нативной рекламы можно кастомизировать. Подробнее об этом в статье Пример оформления с помощью шаблона.

Оформление без использования шаблона

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

Данный способ позволяет самостоятельно сверстать макет нативной рекламы, определить расположение элементов рекламы относительно друг друга. В объявлении могут присутствовать как обязательные, так и опциональные для показа компоненты. Полный их перечень можно найти в разделе Компоненты нативной рекламы.

Совет.

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

Пример оформления без использования шаблона

Для каждого компонента рекламного объявления предоставьте View через экземпляр класса NativeAdViewBinder.Builder. Класс принимает в качестве аргумента контейнер NativeAdView. Все компоненты рекламы должны быть определены как subview данного контейнера.

Сформированный макет рекламного объявления необходимо связать с объектом нативной рекламы NativeAd.

final NativeAdViewBinder nativeAdViewBinder = new NativeAdViewBinder.Builder(mNativeAdView)
                    .setAgeView((TextView) findViewById(R.id.age))
                    .setBodyView((TextView) findViewById(R.id.body))
                    .setCallToActionView((TextView) findViewById(R.id.call_to_action))
                    .setDomainView((TextView) findViewById(R.id.domain))
                    .setFaviconView((ImageView) findViewById(R.id.favicon))
                    .setFeedbackView((TextView) findViewById(R.id.feedback))
                    .setIconView((ImageView) findViewById(R.id.icon))
                    .setMediaView((MediaView) findViewById(R.id.media))
                    .setPriceView((TextView) findViewById(R.id.price))
                    .setRatingView((MyRatingView) findViewById(R.id.rating))
                    .setReviewCountView((TextView) findViewById(R.id.review_count))
                    .setSponsoredView((TextView) findViewById(R.id.sponsored))
                    .setTitleView((TextView) findViewById(R.id.title))
                    .setWarningView((TextView) findViewById(R.id.warning))
                    .build();
                    
                    try {
                    nativeAd.bindNativeAd(nativeAdViewBinder);
                    mNativeAdView.setVisibility(View.VISIBLE);
                    } catch (final NativeAdException exception) {
                    //log exception
                    }
Примечание. Требования к размерам mediaView при отображении видеорекламы

Минимальный размер экземпляра класса MediaView, в котором поддерживается воспроизведение видео: 300x160 или 160x300 в dp (density-independent pixels).

Для поддержки воспроизведения видео в шаблонах нативной рекламы рекомендуется выставить ширину для NativeBannerView не менее 300 dp. Корректная высота для mediaView будет вычислена автоматически, с учетом соотношения ширины и высоты.

Загрузка нескольких рекламных объявлений

Примечание.

Все вызовы Mobile Ads SDK следует выполнять с главного потока.

Yandex Mobile Ads SDK предоставляет возможность загрузки нескольких рекламных объявлений одним запросом (до девяти объявлений).

Для балкового запроса за рекламой воспользуйтесь экземпляром класса NativeBulkAdLoader. Экземпляр класса принимает в методе loadAds аргумент COUNT, определяющий желаемое количество объявлений за один запрос.

final NativeBulkAdLoader nativeBulkAdLoader = new NativeBulkAdLoader(this);
    nativeBulkAdLoader.setNativeBulkAdLoadListener(new NativeBulkAdLoadListener() {
        @Override
        public void onAdsLoaded(@NonNull final List<NativeAd> nativeAds) {
            for (final NativeAd nativeAd : nativeAds) {
                //bind native ad
            }
        }
                
        @Override
        public void onAdsFailedToLoad(@NonNull final AdRequestError error) {
            //log error
        }
    });
                
    final NativeAdRequestConfiguration nativeAdRequestConfiguration = 
    new NativeAdRequestConfiguration.Builder(AdUnitId).build();
    nativeBulkAdLoader.loadAds(nativeAdRequestConfiguration, COUNT);
Примечание.

Yandex Mobile Ads SDK не гарантирует, что будет загружено запрошенное количество объявлений. Полученный массив будет содержать от 0 до COUNT объектов NativeAd. Все полученные объекты рекламы можно показывать отдельно друг от друга, используя описанные выше способы внешнего оформления нативных объявлений.