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

Внимание.

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

Для отображения нативной рекламы объекты YMANativeAd должны быть привязаны к определенной View. Эта View должна определяться как корневой элемент для набора subview, к элементам которого будут привязываться данные, содержащиеся в нативной рекламе.

Ограничение. Требования к размерам mediaView при отображении видеорекламы

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

Для поддержки воспроизведения видео в нативной рекламе рекомендуется выставить ширину для mediaView не менее 300. Чтобы вычислить соответствующее значение высоты mediaView, используйте значение свойства aspectRatio.

Оформление нативной рекламы

  1. Ознакомьтесь со списком обязательных и опциональных subview для нативной рекламы.
  2. Установите значения всех обязательных subview. Это можно сделать с помощью nib или непосредственно в коде. Для этого создайте объект класса YMANativeAdView и определите значения subview в initWithFrame:
    Пример регистрации набора subview:
    override init(frame: CGRect) {
        super.init(frame: frame)
        let titleLabel = createLabel()
        let bodyLabel = createLabel()
        let ageLabel = createLabel()
        let warningLabel = createLabel()
        let sponsoredByLabel = createLabel()
        let priceLabel = createLabel()
        let starRatingView = createStarRatingView()
        let button = createButton()
        let iconImageView = createIconAssetImageView()
        let mediaView = createMediaAssetView()
        addSubview(titleLabel)
        addSubview(bodyLabel)
        addSubview(ageLabel)
        addSubview(warningLabel)
        addSubview(sponsoredByLabel)
        addSubview(priceLabel)
        addSubview(starRatingView)
        addSubview(button)
        addSubview(iconImageView)
        addSubview(mediaView)
        self.titleLabel = titleLabel
        self.bodyLabel = bodyLabel
        self.ageLabel = ageLabel
        self.warningLabel = warningLabel
        self.sponsoredLabel = sponsoredByLabel
        self.callToActionButton = callToActionButton
        self.priceLabel = priceLabel
        self.ratingView = ratingView
        self.iconImageView = iconImageView
        self.mediaView = mediaView
    }
  3. Чтобы получать уведомления о взаимодействии пользователя с рекламой (открытие и закрытие рекламы, выход из приложения), установите для нее делегат YMANativeAdDelegate, реализующий методы:
  4. Запросите значения компонентов нативной рекламы с помощью метода -adAssets. Это поможет заранее рассчитать расположение и размеры этих компонентов.
    let assets = ad.adAssets()
    Пример получения размеров изображения, соотношения сторон медиа и текста заголовка объявления
    let image = assets.image
    let title = assets.title
    let media = assets.media
    print("Image size: \(image?.size ?? .zero)")
    print("Title: \(title ?? "")")
    print(String(format: "Media aspect ratio: %.2f", media?.aspectRatio ?? 0))
  5. Вызовите метод -bindWithAdView:error:, чтобы связать контент с объектом нативной рекламы.
    // ...
    adView = YMANativeAdView(frame: frame)
    //configure content ad view
    // ...
    func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd) {
        ad.delegate = self
        do {
            try ad.bind(with: contentAdView)
        } catch {
            print("Error: \(error)")
        }
    }
    Примечание.

    Если для обязательного элемента нативной рекламы соответствующее свойство YMANativeAdView принимает значение nil, привязка не осуществится — реклама не будет показана. Детали в этом случае можно получить из error.