Баннерная реклама

Внимание.

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

Баннер — настраиваемое объявление, которое занимает часть экрана и реагирует на нажатие.

  1. Типы баннера
  2. Подключение баннера

Типы баннера

Особенности:

  1. Используется заданная ширина баннера. Высота подбирается автоматически.
  2. Ширина баннера задается с помощью метода +stickySizeWithContainerWidth:.
  3. Высота баннера не должна превышать 15% высоты устройства и не должна быть меньше 50 dp.

Примеры отображения баннера:

Подключение баннера

Чтобы подключить баннер:

  1. Добавьте импорт:

    import YandexMobileAds
  2. Создайте @property, где будет храниться ссылка на баннер:

    var adView: YMAAdView!
  3. Создайте баннер:

    Чтобы задать ширину баннера, вызовите метод +stickySizeWithContainerWidth:.

    let adSize = YMAAdSize.stickySize(withContainerWidth: width)
    let adView = YMAAdView(adUnitID: "", adSize: adSize)
    adView.delegate = self
    Ограничение. Требования к размерам баннера при отображении видеорекламы

    Минимальный размер баннера, в котором поддерживается воспроизведение видео: 300x160 или 160x300.

    AdUnitId — уникальный идентификатор рекламного места, который выдается в Партнерском интерфейсе и имеет вид: R-M-XXXXXX-Y.

    При этом self должен удовлетворять протоколу YMAAdViewDelegate. В случае если делегат реализует метод -viewControllerForPresentingModalView, ссылки будут открываться во встроенном браузере внутри приложения. Иначе ссылки будут открываться в браузере, установленном на устройстве.

    Чтобы определить причины, по которым реклама работает некорректно, используйте метод -adViewDidFailLoading:error:.

    Описание ошибок доступно в разделе YMAAdErrorCode.

  4. Разместите баннер. Вы можете разместить баннер двумя способами:

    • С помощью autolayout constraints.

      Добавьте баннер в UIView. Затем добавьте autolayout constraints, чтобы баннер отображался в нужном месте.
      view.addSubview(adView)
      adView.translatesAutoresizingMaskIntoConstraints = false
      var adViewConstraints = [
          adView.leadingAnchor.constraint(equalTo: adView.superview!.leadingAnchor),
          adView.trailingAnchor.constraint(equalTo: adView.superview!.trailingAnchor)
      ]
      let bottomDistance: CGFloat = 8
      if #available(iOS 11.0, *) {
          adViewConstraints.append(
              adView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: bottomDistance)
          )
      } else {
          adViewConstraints.append(
              adView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: bottomDistance)
          )
      }
      NSLayoutConstraint.activate(adViewConstraints)
    • С помощью следующих методов:
      displayAtTop(in:)
      displayAtBottom(in:)

      В обоих случаях баннеры центрируются по горизонтали.

  5. Загрузите баннер методом -loadAdWithRequest:.

    С помощью класса YMAAdRequest передайте код, полученный в интерфейсе Adfox (подробнее смотрите в помощи по Adfox).
    // Код из интерфейса Adfox для работы с прямыми кампаниями.
    var parameters = [String: String]()
    parameters["adf_ownerid"] = "<example>"
    parameters["adf_p1"] = "<example>"
    parameters["adf_p2"] = "<example>"
    parameters["adf_pfc"] = "<example>"
    parameters["adf_pfb"] = "<example>"
    parameters["adf_pt"] = "<example>"
    parameters["adf_pd"] = "<example>"
    parameters["adf_pw"] = "<example>"
    parameters["adf_pv"] = "<example>"
    parameters["adf_prr"] = "<example>"
    parameters["adf_pdw"] = "<example>"
    parameters["adf_pdh"] = "<example>"
    let request = YMAMutableAdRequest()
    request.age = age
    request.contextQuery = contextQuery
    request.contextTags = contextTags
    request.gender = gender
    request.location = location
    request.parameters = parameters
    adView.loadAd(with: adRequest)
  6. Опционально можно включить логирование с помощью метода +enableLogging. Если показ рекламы не был засчитан, в консоли появится сообщение.

  7. Опционально можно настроить получение уведомлений об окончании проигрывания видео в баннерной рекламе.

    Пример реализации
    // Получение экземпляра YMAVideoController с помощью videoController.
    let videoController = adView.videoController
    
    // Установка делегата, который реализует протокол YMAVideoDelegate.
    videoController.delegate = self
    
    // Реализация метода протокола YMAVideoDelegate.
    // MARK: - YMAVideoDelegate
    func videoControllerDidFinishPlayingVideo(_ videoController: YMAVideoController) {
        print("Video complete");
    }