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

Wystarczy kilka zmian w kodzie, aby połączyć reklamy natywne i banery reklamowe w żądaniach reklamy.

Wymagania wstępne

Wczytywanie reklamy

Reklamy natywne renderowane niestandardowo są wczytywane za pomocą GADAdLoader obiektów. Obiekt GADAdLoader można też skonfigurować tak, aby wysyłał żądania reklamy, które mogą skutkować wyświetleniem banera reklamowego lub reklamy natywnej. Dodanie 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 delegat modułu wczytywania 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 wczytywania reklam musi też określić, o jakie rozmiary banerów reklamowych należy wysyłać żądania, odpowiadając na komunikat 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)))
  ];
}

Ręczne zliczanie wyświetleń

Aby włączyć ręczne zliczanie wyświetleń banerów reklamowych wczytywanych za pomocą GADAdLoader, podczas inicjowania GADAdLoader ustaw GAMBannerViewOptions z wartością enableManualImpressions ustawioną 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 zostanie wczytany, możesz wywołać recordManualImpression, gdy stwierdzisz, że reklama została prawidłowo zwrócona i jest widoczna na ekranie, aby ręcznie uruchomić wyświetlenie:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];