Родные стили

Настройки нативного стиля позволяют Google Ad Manager обрабатывать нативные объявления на основе нативных стилей, которые вы указываете в продукте. Сначала укажите размер и таргетинг. Затем добавьте HTML, CSS и JavaScript, чтобы определить адаптивные объявления и обеспечить качественное отображение на всех экранах. Вам не нужно выполнять какой-либо рендеринг; Менеджер рекламы автоматически применяет правильный нативный стиль для места назначения. Нативные стили реализуются так же, как рекламные баннеры, с использованием GAMBannerView . Их можно использовать с фиксированным размером объявления, определенным заранее, или с гибким размером объявления, определяемым во время выполнения.

Предварительные условия

  • Google Mobile Ads SDK версии 7.14.0 или выше.

В этом руководстве предполагается наличие некоторых практических знаний Google Mobile Ads SDK. Если вы еще этого не сделали, ознакомьтесь с нашим руководством по началу работы .

Фиксированный размер

Нативные стили с фиксированным размером позволяют вам контролировать ширину и высоту нативного объявления. Чтобы установить фиксированный размер, выполните следующие действия:

  1. Создайте позицию в пользовательском интерфейсе Менеджера рекламы и выберите один из предопределенных размеров в раскрывающемся списке поля Size .

  2. В Interface Builder установите ширину и высоту GAMBannerView в соответствии с предопределенным размером, выбранным на шаге 1. Список размеров и соответствующие им константы GADAdSize можно увидеть в разделе «Размер баннера» .

Внедрить нативные стили с фиксированным размером так же просто, как следовать инструкциям в первом запросе на баннер , но вы получаете гибкость и контроль над HTML, CSS и JavaScript, чтобы придать вашему баннерному объявлению естественный внешний вид, естественный для вашего приложения. .

Размер жидкости

В некоторых случаях фиксированный размер может не иметь смысла. Например, вы можете захотеть, чтобы ширина объявления соответствовала содержимому вашего приложения, но вам необходимо, чтобы его высота динамически настраивалась в соответствии с содержимым объявления. Чтобы справиться с этим случаем, вы можете указать Fluid в качестве размера объявления в пользовательском интерфейсе Менеджера рекламы, что означает, что размер объявления определяется во время выполнения в приложении. SDK предоставляет специальную константу GADAdSize , kGADAdSizeFluid , для обработки этого случая. Высота изменяемого размера объявления определяется динамически на основе ширины, определенной издателем, что позволяет GAMBannerView регулировать его высоту в соответствии с высотой объявления.

Запрос жидкости

В отличие от других форматов объявлений, размер объявления kGADAdSizeFluid не имеет предопределенной ширины, поэтому обязательно задайте ширину рамки баннера явно в своем коде или в Interface Builder. Если ширина не указана, SDK по умолчанию устанавливает высоту баннера на основе полной ширины устройства.

Если вы делаете запрос с несколькими размерами, включающий kGADAdSizeFluid , возвращаемое объявление всегда помещается внутри гибкого контейнера и ведет себя как гибкое объявление. Если в этот гибкий контейнер возвращается негибкое объявление, SDK центрирует объявление в контейнере, чтобы вам не приходилось изменять ограничение ширины каждый раз, когда возвращается новое объявление.

Реализация запроса жидкости одного и нескольких размеров очень похожа; единственное отличие состоит в том, что для запроса с несколькими размерами вы устанавливаете свойство validAdSizes , чтобы указать размеры объявлений, действительные для запроса объявления:

Быстрый

bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
                           NSValueFromGADAdSize(kGADAdSizeBanner)]

Цель-C

_bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
                              NSValueFromGADAdSize(kGADAdSizeBanner) ];

Вот как выглядит полная реализация в коде:

Быстрый

var bannerView: GAMBannerView!

override func viewDidLoad() {
  super.viewDidLoad()
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  bannerView = GAMBannerView(adSize: kGADAdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
  //                            NSValueFromGADAdSize(kGADAdSizeBanner)]

  bannerView.adUnitID = "YOUR_AD_UNIT_ID"
  bannerView.rootViewController = self

  // Make the ad request.
  bannerView.load(GAMRequest())
}

Цель-C

GAMBannerView *_bannerView;

- (void)viewDidLoad {
  [super viewDidLoad];
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  _bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeFluid];
  CGRect frameRect = _bannerView.frame;
  frameRect.size.width = CGRectGetWidth(self.view.bounds);
  _bannerView.frame = frameRect;

  // Uncomment this code for a multisize fluid request.
  // _bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
  //                               NSValueFromGADAdSize(kGADAdSizeBanner) ];

  _bannerView.adUnitID = @"YOUR_AD_UNIT_ID";
  _bannerView.rootViewController = self;

  // Make the ad request.
  [_bannerView loadRequest:[GAMRequest request]];
}

Чтобы увидеть пример реализации размера объявления Ad Manager Fluid, загрузите демо-приложение iOS API на Swift или Objective-C.

Скачать демо-версию API

Протокол GADAdSizeDelegate

Возможно, вам захочется узнать высоту баннера до изменения размера его объявления. adView:willChangeAdSizeTo: уведомляет своего делегата до того, как вид баннера изменится на новый GADAdSize . Чтобы получить уведомление до того, как вид баннера изменится на новый размер объявления, ваш класс должен соответствовать протоколу GADAdSizeDelegate .

Вот пример реализации обратного вызова adView:willChangeAdSizeTo: который показывает, как получить новую ширину и высоту баннера:

Быстрый

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
bannerView.adSizeDelegate = self

// MARK: - GADAdSizeDelegate

func adView(_ bannerView: GADBannerView, willChangeAdSizeTo adSize: GADAdSize) {
  let height = adSize.size.height
  let width = adSize.size.width
}

Цель-C

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
_bannerView.adSizeDelegate = self;

#pragma mark - GADAdSizeDelegate

- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)adSize {
  CGFloat height = adSize.size.height;
  CGFloat width = adSize.size.width;
}