Anúncios nativos

Selecione a plataforma: Android iOS Flutter Unity

Os anúncios nativos são recursos de publicidade mostrados aos usuários por componentes de interface nativos à plataforma. Eles são exibidos com base nas mesmas classes usadas nos seus storyboards e podem ser formatados de modo compatível com o design visual do seu app.

Quando um anúncio nativo é carregado, seu app recebe um objeto de anúncio que contém os recursos dele. O aplicativo, e não o SDK dos Anúncios para Dispositivos Móveis do Google, é responsável por mostrar esses recursos.

De modo geral, a implementação dos anúncios nativos é feita em duas etapas: carregar um anúncio usando o SDK e exibir o conteúdo dele no app.

Nesta página, mostramos como usar o SDK para carregar anúncios nativos.

Pré-requisitos

Sempre usar anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos.

A maneira mais fácil de fazer isso é usando nosso ID de bloco de anúncios dedicado para testes com anúncios nativos no iOS:

ca-app-pub-3940256099942544/3986624511

Ele foi configurado especialmente para retornar anúncios de teste em todas as solicitações, e você pode usá-lo nos seus próprios apps durante a programação, os testes e a depuração. Só não se esqueça de substituí-lo pelo seu ID de bloco de anúncios antes de publicar o app.

Para mais informações sobre como os anúncios de teste do SDK para Dispositivos Móveis funcionam, consulte Anúncios de teste.

Carregar anúncios

Os anúncios nativos são carregados com a classe GADAdLoader, que envia mensagens aos delegates conforme o protocolo GADAdLoaderDelegate.

Inicializar o carregador de anúncios

Antes de carregar um anúncio, você precisa inicializar o carregador. O código a seguir demonstra como inicializar um GADAdLoader:

Swift

adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Você vai precisar de um ID de bloco de anúncios (que pode ser o de teste), constantes para transmitir na matriz adTypes e especificar quais formatos nativos você quer solicitar, e também das opções que você quer definir no parâmetro options. A lista de valores possíveis para o parâmetro options pode ser encontrada na página Definir opções de anúncios nativos.

A matriz adTypes precisa ter esta constante:

Implementar o delegate do carregador de anúncios

O delegate do carregador de anúncios precisa implementar protocolos específicos ao seu tipo de anúncio. Para anúncios nativos, o protocolo GADNativeAdLoaderDelegate inclui uma mensagem enviada ao delegate quando eles são carregados.

Swift

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

Solicitar anúncios

Depois que GADAdLoader for inicializado, chame o método loadRequest: dele para solicitar um anúncio:

Swift

adLoader.load(Request())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

O método loadRequest: em GADAdLoader aceita os mesmos objetos GADRequest que banners e intersticiais. É possível usar os objetos da solicitação para adicionar informações de segmentação do mesmo modo que você faria com outros tipos de anúncios.

Carregar vários anúncios (opcional)

Para carregar vários anúncios em uma única solicitação, defina o objeto GADMultipleAdsAdLoaderOptions ao inicializar um GADAdLoader.

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

O limite por solicitação é de cinco, e não há garantia de que o SDK vai retornar o número exato de anúncios solicitados.

Todos os anúncios retornados pelo Google serão diferentes uns dos outros, mas não há garantia de que os anúncios de inventário reservado ou de compradores terceirizados sejam únicos.

Não use a classe GADMultipleAdsAdLoaderOptions se você estiver usando a mediação, porque as solicitações de vários anúncios nativos não funcionam para IDs de bloco configurados para esse processo.

Determinar quando o carregamento foi concluído

Depois que um app chama loadRequest:, ele pode receber os resultados da solicitação usando chamadas para:

A solicitação de um único anúncio vai resultar em uma chamada para um desses métodos.

A solicitação de vários anúncios vai resultar em pelo menos um callback para os métodos acima, mas não mais do que o número máximo de anúncios solicitados.

Além disso, GADAdLoaderDelegate oferece o callback adLoaderDidFinishLoading. Esse método delegado indica que um carregador de anúncios terminou de carregar a publicidade e que nenhum outro anúncio ou erro será informado para a solicitação. Confira um exemplo de como usar esse método ao carregar vários anúncios nativos de uma só vez:

Swift

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(Request())
  }

  func adLoader(_ adLoader: AdLoader,
       didReceive nativeAd: NativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      // The UIViewController parameter is nullable.
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Como lidar com solicitações com falha

Os protocolos acima estendem o protocolo GADAdLoaderDelegate, que define a mensagem enviada quando ocorre uma falha no carregamento dos anúncios.

Swift

public func adLoader(_ adLoader: AdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

Receber notificações sobre eventos de anúncios nativos

Para receber notificações sobre eventos relacionados às interações com anúncios nativos, defina a propriedade delegate do anúncio nativo:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Em seguida, implemente GADNativeAdDelegate para receber as seguintes chamadas de delegate:

Swift

func nativeAdDidRecordImpression(_ nativeAd: NativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Práticas recomendadas

Siga estas regras ao carregar anúncios.

  • Os apps que usam anúncios nativos em uma lista precisam pré-armazenar essa lista em cache.

  • Quando você fizer isso, limpe e recarregue o cache depois de uma hora.

  • Não chame loadRequest: novamente em um GADAdLoader até que a solicitação anterior termine de carregar, conforme indicado por adLoaderDidFinishLoading:.

  • Limite o cache de anúncios nativos apenas ao que é necessário. Por exemplo, ao usar o pré-cache, armazene apenas os anúncios que estão imediatamente visíveis na tela. Os anúncios nativos consomem muita memória quando ficam armazenados em cache, e por isso precisam ser destruídos.

  • Destrua os anúncios nativos quando eles não estiverem mais em uso.

Mostrar seu anúncio

Depois de carregar um anúncio, basta mostrá-lo aos usuários. Acesse nosso guia de anúncios nativos avançados para saber como fazer isso.