Łączenie żądań reklamy natywnej renderowanej niestandardowo i banerów reklamowych

Wprowadzając kilka zmian w kodzie, możesz połączyć reklamy natywne i banerowe w żądaniach reklamy.

Wymagania wstępne

Wczytywanie reklamy

Niestandardowo renderowane reklamy natywne są wczytywane za pomocą obiektów GADAdLoader. Obiekt GADAdLoader można też skonfigurować tak, aby wysyłał żądania reklam, które mogą skutkować wyświetleniem banera lub reklamy natywnej. Dodanie wartości GADAdLoaderAdTypeGAMBanner do parametru tablicy adTypes wraz z typami reklam natywnych, takimi jak GADAdLoaderAdTypeNative, podczas tworzenia obiektu GADAdLoader określa, że banery reklamowe powinny konkurować z reklamami natywnymi o wypełnienie żądania.

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

Podczas wysyłania żądań banerów reklamowych za pomocą GADAdLoader obiekt delegowany modułu do ładowania reklam musi być zgodny z protokołem GAMBannerAdLoaderDelegate. Ten protokół zawiera komunikat wysyłany po wczytaniu banera reklamowego:

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didReceive GAMBannerView: GAMBannerView)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveGAMBannerView:(GAMBannerView *)bannerView;

Delegat modułu ładującego reklamy musi też określić, o jakie rozmiary banerów reklamowych należy prosić, odpowiadając na wiadomość validBannerSizesForAdLoader, jak pokazano poniżej.

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

Ustaw rozmiar reklamy mniejszy niż rozmiar ekranu urządzenia lub mu równy. Aby określić maksymalny rozmiar ekranu w systemie iOS 26 lub nowszym, użyj właściwości UIWindowScene.effectiveGeometry.coordinateSpace. W systemie iOS 18 lub starszym użyj właściwości UIWindowScene.coordinateSpace. Szczegółowe informacje o ograniczeniach rozmiaru znajdziesz w artykule Rozwiązywanie problemów z niewypełnionymi wyświetleniami w usłudze Ad Manager.

Ręczne zliczanie wyświetleń

Aby włączyć ręczne zliczanie wyświetleń w przypadku banerów reklamowych wczytywanych przez GADAdLoader, podczas inicjowania GADAdLoader ustaw GAMBannerViewOptions z parametrem enableManualImpressions ustawionym na YES.

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

Jeśli baner reklamowy się wczyta, możesz wywołać funkcję recordManualImpression, gdy ustalisz, że reklama została pomyślnie zwrócona i jest wyświetlana na ekranie, aby ręcznie wywołać wyświetlenie:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];