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

Pré-requisitos

Para usar este guia de implementação, você precisa conhecer o seguinte:

Visão geral

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

GADSearchBannerView

  • Essa classe herda da classe UIView do iOS e exibe os anúncios do AFSMA. O GADSearchBannerView faz a solicitação para um anúncio com um GADDynamicHeightSearchRequest e renderiza os anúncios retornados. O GADSearchBannerView precisa ser adicionado a qualquer uma das visualizações existentes do app. Normalmente, é 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. A instanciação de GADSearchBannerView com initWithAdSize:kGADAdSizeBanner solicita anúncios do AFSMA legados.
  • A propriedade adUnitID deste objeto precisa ser definida como o código da propriedade.

GADDynamicHeightSearchRequest

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

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

  • Esse callback é chamado quando a solicitação de anúncio é retornada. Como o bloco retornado pode conter vários anúncios com extensões diferentes, o tamanho exato do bloco é desconhecido quando a solicitação é feita. Depois que o anúncio for retornado, a visualização do banner precisará ser atualizada para acomodar o novo tamanho do bloco. 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 um 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 determina os parâmetros do anúncio que será renderizado no 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 GADSearchBannerView quando os anúncios retornarem, o callback a seguir precisa ser implementado.

// 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 usando 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 dos 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, será possível usar esse callback para tratar corretamente o erro e investigar o erro com o objeto de erro.