Вы можете объединить нативные объявления и баннеры в запросах объявлений, внеся несколько изменений в код.
Требования
- Версия 7.20.0 или более поздняя Google Mobile Ads SDK.
- Настройте Google Mobile Ads SDK.
Загрузка объявления
Нативные объявления со специальной обработкой загружаются с помощью объектов GADAdLoader. Объект GADAdLoader также можно настроить так, чтобы он отправлял запросы объявлений, которые могут привести к показу баннера или нативного объявления. Добавление GADAdLoaderAdTypeGAMBanner в параметр массива adTypes вместе с типами нативных объявлений, например GADAdLoaderAdTypeNative, при создании объекта GADAdLoader указывает, что баннеры должны конкурировать с нативными объявлениями за выполнение запроса.
Swift
adLoader = GADAdLoader(adUnitID: "/21775744923/example/native-and-banner", rootViewController: self, adTypes: [.native, .gamBanner], options: [... ad loader options objects ...]) adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"/21775744923/example/native-and-banner" rootViewController:rootViewController adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ] options:@[ ... ad loader options objects ... ]]; self.adLoader.delegate = self;
GAMBannerAdLoaderDelegate
При запросе баннеров через GADAdLoader делегат загрузчика объявлений должен соответствовать протоколу GAMBannerAdLoaderDelegate. Этот протокол включает сообщение, которое отправляется при загрузке баннера:
Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive GAMBannerView: GAMBannerView)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveGAMBannerView:(GAMBannerView *)bannerView;
Делегат загрузчика объявлений также должен указать, какие размеры баннеров следует запрашивать, ответив на сообщение validBannerSizesForAdLoader, как показано ниже.
Swift
public func validBannerSizes(for adLoader: GADAdLoader) -> [NSValue] { return [NSValueFromGADAdSize(GADAdSizeBanner), NSValueFromGADAdSize(GADAdSizeMediumRectangle), NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSize(width: 120, height: 20)))] }
Objective-C
- (NSArray*)validBannerSizesForAdLoader:(GADAdLoader *)adLoader { return @[ @(GADAdSizeBanner), @(GADAdSizeMediumRectangle), @(GADAdSizeFromCGSize(CGSizeMake(120, 20))) ]; }
Укажите размер объявления, который меньше или равен размеру экрана устройства.
Чтобы определить максимальный размер экрана на устройствах с iOS 26 и более поздних версий, используйте свойство UIWindowScene.effectiveGeometry.coordinateSpace. На устройствах с iOS 18 и более ранних версий используйте свойство UIWindowScene.coordinateSpace.
Подробнее об ограничениях по размеру см. в статье Устранение неполадок, связанных с невыполненными показами, в Менеджере рекламы.
Подсчет количества показов вручную
Чтобы включить ручной подсчет показов для баннеров, загружаемых через GADAdLoader, при инициализации GADAdLoader задайте GAMBannerViewOptions со значением YES для enableManualImpressions.
Swift
let bannerViewOptions = GAMBannerViewOptions() bannerViewOptions.enableManualImpressions = true adLoader = GADAdLoader( adUnitID: "/21775744923/example/native-and-banner", rootViewController: self, adTypes: [.native, .gamBanner], options: [bannerViewOptions])
Objective-C
GAMBannerViewOptions *bannerViewOptions = [[GAMBannerViewOptions alloc] init]; bannerViewOptions.enableManualImpressions = YES; self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"/21775744923/example/native-and-banner" rootViewController:self adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ] options:@[ bannerViewOptions ]];
Если баннер загружается, вы можете вызвать recordManualImpression, когда определите, что объявление успешно возвращено и находится на экране, чтобы вручную зарегистрировать показ:
Swift
bannerView.recordImpression()
Objective-C
[self.bannerView recordImpression];