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

Внимание.

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

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

Слайдер реализован по принципу работы нативной рекламы. Внешний вид рекламы может настраиваться паблишером в зависимости от функций и дизайна приложения, в котором будет отображаться слайдер.

  1. Загрузка слайдера
  2. Показ слайдера

Загрузка слайдера

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

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

  3. Установите делегат для получения рекламы, который реализует протокол YMANativeAdLoaderDelegate.

  4. Чтобы отслеживать процесс загрузки рекламы, реализуйте методы протокола YMANativeAdLoaderDelegate: -nativeAdLoader:didFailLoadingWithError:, -nativeAdLoader:didLoadAd:.

  5. Отправьте загрузчику сообщение loadAdWithRequestConfiguration:, чтобы загрузить рекламу.

    adLoader.loadAd(with: requestConfiguration)
  6. Если реклама загрузилась, будет вызван метод:

    func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd)
  7. Если реклама не загрузилась, будет вызван следующий метод:

    func nativeAdLoader(_ loader: YMANativeAdLoader, didFailLoadingWithError error: Error)

    Подробно о возможных ошибках см. раздел YMANativeErrorCode.

// Создание загрузчика
adLoader = YMANativeAdLoader()
adLoader.delegate = self

// Создание конфигурации запроса
let requestConfiguration = YMANativeAdRequestConfiguration(adUnitID: "<AdUnitID>")

// Передача загрузчику конфигурации запроса
adLoader.loadAd(with: requestConfiguration)

// Реализация методов делегата
....

func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd) {
    // Отобразите рекламу
}

Показ слайдера

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

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

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

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

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

Совет.

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

Вызовите метод bindAdToSliderView и передайте в него контейнер для слайдера объявлений.

Внешнее оформление каждого объявления, входящего в слайдер, настраивается одним из способов оформления стандартной нативной рекламы.

    func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd) {
        self.ad = ad
        ad.delegate = self
        // Проверяем наличие вложенных объявлений
        if ad.ads.count != 0 {
            // Создаем контейнер для слайдера; Вместо YMANativeAdView должен быть ваш наследник этого класса
            let sliderAdView = YMANativeAdView()

            // Вызываем метод bindAd(toSliderView: _) и передаем в него контейнер
            do {
                try ad.bindAd(toSliderView: sliderAdView)
            } catch {
                // Проверяем сообщение об ошибке и исправляем проблему
                return
            }

            for subAd in ad.ads {
                // Подписываемся на делегат
                subAd.delegate = self

                // Создаем рекламное view для объявления 
                // Вместо YMANativeAdView должен быть ваш наследник этого класса
                let subAdView = YMANativeAdView()

                // Вызываем метод bind(with: subAdView) для объявления
                do {
                    try subAd.bind(with: subAdView)
                } catch {
                    // Проверяем сообщение об ошибке и исправляем проблему
                    return
                }

                // Добавляем объявление в контейнер
                sliderAdView.addSubview(subAdView)
                // Располагаем объявление в контейнере
            }

        } else {
            // Обработать как обычную нативную рекламу
            // https://yandex.ru/dev/mobile-ads/doc/ios/quick-start/config.html
        }
    }