Родные стили

Выберите платформу: Android iOS Flutter

Настройки нативных стилей позволяют Google Ad Manager обрабатывать рендеринг ваших нативных объявлений на основе нативных стилей, указанных в продукте. Сначала укажите размер и таргетинг. Затем добавьте HTML, CSS и JavaScript, чтобы создать адаптивные объявления, обеспечивающие качественное отображение на всех экранах. Вам не нужно выполнять рендеринг; Ad Manager автоматически применяет нужный нативный стиль для целевой страницы. Нативные стили реализуются так же, как и баннерная реклама, с помощью 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 = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]

Objective-C

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

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

Быстрый

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

Чтобы увидеть пример реализации размера рекламы 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: 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;
}