Как задать нативные стили

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

Требования

  • Google Mobile Ads SDK версии 7.14.0 или более поздней;

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

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

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

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

Задайте размер объявления, который не превышает размер экрана устройства. Чтобы определить максимальный размер экрана на устройствах iOS 26 и более поздних версий, используйте свойство UIWindowScene.effectiveGeometry.coordinateSpace. На устройствах с iOS 18 и более ранними версиями используйте свойство UIWindowScene.coordinateSpace. Подробнее об ограничениях по размеру…

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

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

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

Гибкий размер

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

Запрос гибкого размера

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

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

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

Swift

bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]

Objective-C

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

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

Swift

var bannerView: AdManagerBannerView!

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 = AdManagerBannerView(adSize: AdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]

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

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

Objective-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]];
}

Чтобы посмотреть пример реализации гибкого размера объявлений в Менеджере рекламы, скачайте демонстрационное приложение iOS API на языке Swift или Objective-C.

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

Протокол GADAdSizeDelegate

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

Ниже приведен пример реализации обратного вызова adView:willChangeAdSizeTo:, который показывает, как получить новые значения ширины и высоты баннера.

Swift

// 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: BannerView, willChangeAdSizeTo adSize: AdSize) {
  let height = adSize.size.height
  let width = adSize.size.width
}

Objective-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;
}