Combinar solicitações de anúncio nativo e de banner com renderização personalizada

Com algumas mudanças no código, é possível combinar anúncios nativos e de banner nas solicitações de anúncios.

Pré-requisitos

Carregar um anúncio

Os anúncios nativos renderizados de forma personalizada são carregados por GADAdLoader objetos. O objeto GADAdLoader também pode ser configurado para fazer solicitações de anúncios que podem resultar em um banner ou anúncio nativo. A adição de GADAdLoaderAdTypeGAMBanner ao parâmetro de matriz adTypes, juntamente com tipos de anúncios nativos, como GADAdLoaderAdTypeNative, ao criar o objeto GADAdLoader, especifica que os anúncios de banner devem competir com os anúncios nativos para preencher a solicitação.

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

Ao solicitar anúncios de banner pelo GADAdLoader, o delegado do carregador de anúncios precisa estar em conformidade com o protocolo GAMBannerAdLoaderDelegate. Esse protocolo inclui uma mensagem enviada quando um anúncio de banner é carregado:

Swift

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

Objective-C

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

O delegado do carregador de anúncios também precisa especificar quais tamanhos de anúncios de banner devem ser solicitados respondendo à mensagem validBannerSizesForAdLoader, conforme mostrado abaixo.

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

Contagem manual de impressões

Para ativar a contagem manual de impressões em anúncios de banner carregados pelo GADAdLoader, defina um GAMBannerViewOptions com enableManualImpressions definido como YES ao inicializar 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 ]];

Se um anúncio de banner for carregado, você poderá chamar recordManualImpression quando determinar que um anúncio foi retornado com sucesso e está sendo exibido na tela para disparar uma impressão manualmente:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];