Настройки нативных стилей позволяют 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.
Подробнее об ограничениях по размеру см. в статье Устранение неполадок, связанных с невыполненными показами, в Менеджере рекламы.
Создайте позицию в интерфейсе Менеджера рекламы и выберите один из стандартных размеров в раскрывающемся меню
Size.В 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.
Протокол 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;
}