Руководство по интеграции MediaView

Примечание.

Интеграция описана на примере рекламы типа ImageAd.

  1. Подключите Mobile Ads SDK.

    Добавьте в Podfile проекта зависимость:

    pod 'YandexMobileAds', '2.17.0'
    Примечание.

    Если в Podfile присутствует строка use_frameworks!, рекомендуется использовать динамический фреймворк.

  2. Загрузите нативную рекламу.

    1. Создайте объект класса YMANativeAdLoader с конфигурацией YMANativeAdLoaderConfiguration.
    2. Установите delegate для созданного объекта YMANativeAdLoader.
    3. Вызовите метод – loadAdWithRequest:.
  3. Отобразите нативную рекламу.

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

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

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

    1. Для простого способа отображения рекламы воспользуйтесь шаблонами.
      1. Создайте объект класса YMANativeBannerView.
      2. Установите для него объект загруженной рекламы.
      - (void)viewDidLoad
      {
          [super viewDidLoad];
        YMANativeAdLoaderConfiguration *configuration =
                [[YMANativeAdLoaderConfiguration alloc] initWithBlockID:@"your_block"
                                                loadImagesAutomatically:YES];
            self.adLoader = [[YMANativeAdLoader alloc] initWithConfiguration:configuration];
            self.adLoader.delegate = self;
            [self.adLoader loadAdWithRequest:nil];
        }
      
      - (void)nativeAdLoader:(YMANativeAdLoader *)loader didLoadImageAd:(id<YMANativeImageAd>)ad
      {
          YMANativeBannerView *bannerView = [[YMANativeBannerView alloc] init];
          bannerView.ad = ad;
          [self.view addSubview:bannerView];
      }
      
      - (void)nativeAdLoader:(YMANativeAdLoader *)loader didFailLoadingWithError:(NSError *)error
      {
          // handle error
      }

      Подробнее о нативной рекламе читайте в разделе Процесс подключения нативной рекламы.

    2. Также вы можете воспользоваться ручным способом отображения нативной рекламы. Такой способ позволяет отображать нативную рекламу максимально адаптивно под ваш основной контент.

      1. Определите значение subview у объекта класса YMANativeImageAdView.

                UIButton *feedbackButton = [self button];
                YMANativeMediaView *mediaView = [self mediaAssetView];
                self.feedbackButton = feedbackButton;
                self.mediaView = mediaView;
                [self addSubview:self.mediaView];
                [self addSubview:self.feedbackButton];
      2. Вызовите метод – bindImageAdToView:delegate:error:.

        - (void)nativeAdLoader:(YMANativeAdLoader *)loader didLoadImageAd:(id<YMANativeImageAd>)ad
        {
            NSError * __autoreleasing error = nil;
            [ad bindImageAdToView:self.imageAdView delegate:self error:&error];
            [self configureViewForAd:ad];
            [self.view addSubview:self.imageAdView];
        }
        
        - (void)configureViewForAd:(id<YMANativeGenericAd>)ad
        {
            YMANativeAdAssets *assets = [ad adAssets];
            if (view.ad.adAssets.feedbackAvailable) {
                self.imageAdView.feedbackButton.hidden = NO;
            }
            else {
                self.imageAdView.feedbackButton.hidden = YES;
            }
            
            YMANativeAdMedia *media = assets.media;
            if (media != nil) {
                //you can use the aspect ratio if you need it to determine the size of media view.
                NSLog(@"Media aspect ratio: %.2f", media.aspectRatio);
            }
        }

        Подробнее о нативной рекламе читайте в разделе Оформление без использования шаблона.