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

Dzięki kilku zmianom w kodzie możesz łączyć reklamy natywne i banery reklamowe w żądaniach reklam.

Wymagania wstępne

Wczytywanie reklamy

Reklamy natywne renderowane niestandardowo są ładowane za pomocą obiektów GADAdLoader. Obiekt GADAdLoader możesz też skonfigurować tak, aby wysyłał żądania reklam, które mogą prowadzić do wyświetlenia banera lub reklamy natywnej. Dodanie do parametru tablicy adTypes wartości GADAdLoaderAdTypeGAMBanner oraz typów reklam natywnych, takich jak GADAdLoaderAdTypeNative, podczas tworzenia obiektu GADAdLoader wskazuje, ż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 żądania banerów reklamowych za pomocą interfejsu GADAdLoader delegowany ładownik reklam musi być zgodny z protokołem GAMBannerAdLoaderDelegate. Ten protokół obejmuje wiadomość wysyłaną po załadowaniu banera reklamowego:

Swift

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

Objective-C

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

Delegatem programu ładowania reklam musi też określić, o które rozmiary banerów ma być wysłane żądanie, odpowiadając na wiadomość validBannerSizesForAdLoader w sposób pokazany 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ń w przypadku reklam banerowych wczytywanych przez GADAdLoader, ustaw GAMBannerViewOptions, a w przypadku enableManualImpressions ustaw wartość YES podczas inicjowania GADAdLoader.

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 załadowany, możesz wywołać funkcję recordManualImpression, gdy stwierdzisz, że reklama została zwrócona i jest widoczna na ekranie, aby ręcznie wywołać wyświetlenie:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];