Как объединять запросы нативных объявлений с пользовательским рендерингом и баннеров

Вы можете объединить нативные объявления и баннеры в запросах объявлений, внеся несколько изменений в код.

Требования

Загрузка объявления

Нативные объявления со специальной обработкой загружаются с помощью объектов 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];