Implementação do AFS em aplicativos para dispositivos móveis (AFSMA) no iOS

Pré-requisitos

Este guia de implementação pressupõe que você esteja familiarizado com o seguinte:

Informações gerais

Este documento descreve o processo para integrar anúncios do AFSMA em aplicativos para dispositivos móveis (AFSMA, na sigla em inglês) no seu app iOS. Às vezes, esses anúncios também são chamados de anúncios de pesquisa de altura dinâmica. Para solicitar e renderizar anúncios do AFSMA no iOS, será necessário implementar o seguinte:

GADSearchBannerView

  • Essa classe é herdada da classe UIView do iOS e exibe os anúncios do AFSMA. O GADSearchBannerView faz a solicitação de um anúncio com uma GADDynamicHeightSearchRequest e renderiza os anúncios retornados. O GADSearchBannerView precisa ser adicionado a qualquer uma das visualizações do app. Geralmente, é o controlador de visualização pai que contém a visualização a que o GADSearchBannerView é adicionado. Os delegados apropriados precisam ser definidos no GADSearchBannerView.
  • O GADSearchBannerView precisa ser instanciado com initWithAdSize:kGADAdSizeFluid para solicitar anúncios do AFSMA. Instanciar GADSearchBannerView com initWithAdSize:kGADAdSizeBanner solicita anúncios legados do AFSMA.
  • A propriedade adUnitID nesse objeto precisa ser definida como seu código de propriedade.

GADDynamicHeightSearchRequest

  • Esse objeto encapsula os parâmetros de solicitação de anúncio. Isso é análogo à definição de parâmetros nos objetos de solicitação de anúncio JavaScript (opções de página, opções de bloco) para a Web para computadores e dispositivos móveis do AFS.

(void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size

  • Esse callback é chamado quando a solicitação de anúncio é retornada. Como o bloco de anúncios retornado pode conter vários anúncios com extensões diferentes, o tamanho exato dele é desconhecido quando a solicitação de anúncio é feita. Depois que o anúncio for retornado, a visualização do banner precisará ser atualizada para acomodar o novo tamanho do bloco de anúncios. O código para redimensionar o GADSearchBannerView na visualização mãe precisa ser implementado aqui.

Implementação de exemplo

O exemplo abaixo demonstra o uso de um GBannerViewController para criar uma GADSearchBannerView como uma subvisualização de um UIScrollView. Para solicitar anúncios do AFSMA corretamente, o objeto GADSearchBannerView precisa ser instanciado com initWithAdSize:kGADAdSizeFluid.

// GBannerViewController.m implementation

@interface GBannerViewController () <GADAdSizeDelegate,
                                     GADBannerViewDelegate>

@property(nonatomic, strong) GADSearchBannerView *searchBannerView;

@property(nonatomic, strong) UIScrollView *scrollView;

@end

@implementation GBannerViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ....
  ....

  // Create the banner.
  self.searchBannerView = [[GADSearchBannerView alloc] initWithAdSize:kGADAdSizeFluid];

  // Replace with your pub ID (e.g. ms-app-pub-9616389000213823).
  self.searchBannerView.adUnitID = @"ms-app-pub-################";

  // Set the initial location and size of the banner. The initial height
  // is set to 0 since we might not get an ad back.
  self.searchBannerView.frame = CGRectMake(0,
                                           0,
                                           CGRectGetWidth(self.view.bounds),
                                           0);
  self.searchBannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  // Set the delegate properties.
  self.searchBannerView.adSizeDelegate = self;
  self.searchBannerView.delegate = self;

  // Add the new search banner into the parent scrollView.
  [self.scrollView addSubview:self.searchBannerView];
  }

No mesmo GBannerViewController, crie uma GADDynamicHeightSearchRequest que determine os parâmetros do anúncio que vão ser renderizados na GADSearchView.

// Create a search request and load the banner.
GADDynamicHeightSearchRequest *searchRequest = [[GADDynamicHeightSearchRequest alloc] init];

// Ad request options (set using GADDynamicHeightSearchRequest properties).
searchRequest.query = @"flowers";
searchRequest.numberOfAds = 2;

// Replace with the ID of a style from your custom search styles
[searchRequest setAdvancedOptionValue:@"0000000001"
                               forKey:@"styleId"];

Outras opções de personalização são possíveis definindo outras propriedades no objeto GADDynamicHeightSearchRequest.

Para fazer uma solicitação de anúncio, chame loadRequest com o objeto GADDynamicHeightSearchRequest do objeto GADSearchBannerView:

[self.searchBannerView loadRequest:searchRequest];

Para que a visualização mãe acomode corretamente o GADSearchBannerView quando os anúncios forem retornados, implemente o callback a seguir.

// Callback to update the parent view height.
- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size {
  // Update the banner view based on the ad size.
  CGRect newFrame = self.searchBannerView.frame;
  newFrame.size.height = size.size.height;
  self.searchBannerView.frame = newFrame;

  // Perform any additional logic needed due to banner view size change.
  ...
}

Opções avançadas

A maioria dos parâmetros de solicitação de anúncio pode ser definida por meio de propriedades no objeto GADDynamicHeightSearchRequest (searchRequest acima). Outros parâmetros precisam ser definidos usando pares de chave-valor com o método setAdvancedOptionValue:

// Advanced customization options (set using key-value pair).

// Set a parameter (parameter_name) and its value (parameter_value).
[searchRequest setAdvancedOptionValue:@"parameter_value"
                               forKey:@"parameter_name"];

// Example: Show visible URL below description (domainLinkAboveDescription: false).
[searchRequest setAdvancedOptionValue:@"false"
                               forKey:@"domainLinkAboveDescription"];

Veja a lista completa de parâmetros disponíveis.

Como investigar erros

O GADBannerViewDelegate contém um callback para ajudar você a investigar erros:

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {

  // This callback is triggered when the ad request fails.
  // Add code here to debug the error object to discover causes of failure
  NSLog(@"Ad call failed due to %@", error.userInfo[@"NSUnderlyingError"]);
}

Se uma solicitação de anúncio falhar, use esse callback para tratar do erro e investigar com o objeto de erro.