Настройки нативных стилей позволяют Google Ad Manager обрабатывать рендеринг ваших нативных объявлений на основе нативных стилей, указанных в продукте. Сначала укажите размер и таргетинг. Затем добавьте HTML, CSS и JavaScript, чтобы создать адаптивные объявления, обеспечивающие качественное отображение на всех экранах. Вам не нужно выполнять рендеринг; Ad Manager автоматически применяет нужный нативный стиль для целевой страницы. Нативные стили реализуются так же, как и баннерная реклама, с помощью GAMBannerView
. Их можно использовать с фиксированным размером объявления, определяемым заранее, или с изменяемым размером, определяемым во время показа.
Предпосылки
- Google Mobile Ads SDK версии 7.14.0 или выше
Это руководство предполагает наличие у вас некоторых практических навыков работы с Google Mobile Ads SDK. Если вы ещё этого не сделали, рекомендуем ознакомиться с нашим руководством по началу работы .
Фиксированный размер
Нативные стили с фиксированным размером позволяют контролировать ширину и высоту нативного объявления. Чтобы установить фиксированный размер, выполните следующие действия:
Создайте позицию в пользовательском интерфейсе Менеджера объявлений и выберите один из предопределенных размеров в раскрывающемся списке поля
Size
.В 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.
Протокол 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;
}