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

Настройки нативных стилей позволяют 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;
}