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

Pré-requisitos

Para seguir este guia de implementação, é necessário ter familiaridade com:

Visão geral

Este documento descreve o processo de integração de anúncios do AFS em apps para dispositivos móveis (AFSMA) no seu app para dispositivos móveis iOS. Os anúncios do AFSMA também são chamados de dinâmicos altura. Para solicitar e renderizar anúncios do AFSMA no iOS, você precisará implemente o seguinte:

GADSearchBannerView

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

GADDynamicHeightSearchRequest

  • Este objeto encapsula os parâmetros de solicitação de anúncio. Isso é análogo ao nos objetos de solicitação de anúncio JavaScript (opções de página, 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 anúncio retornado bloco de anúncios pode conter vários anúncios com extensões diferentes, o tamanho exato do bloco de anúncios é desconhecido quando a solicitação de anúncio é feita. Assim que o anúncio for for retornado, a visualização do banner precisará ser atualizada para acomodar o novo tamanho do o bloco de anúncios. O código para redimensionar a GADSearchBannerView na visualização mãe precisa ser implementadas 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 corretamente a AFSMA anúncios, o objeto GADSearchBannerView deve 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 um GADDynamicHeightSearchRequest. que determina os parâmetros do anúncio que serão renderizados 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 propriedades adicionais no GADDynamicHeightSearchRequest objeto.

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

[self.searchBannerView loadRequest:searchRequest];

Para que a visualização mãe acomode corretamente a GADSearchBannerView assim que o anúncios forem retornados, será necessário implementar 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 na Objeto GADDynamicHeightSearchRequest (searchRequest acima). Outros parâmetros vão precisar ser definidos usando pares de chave-valor com o 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 os 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 o erro de maneira adequada. e investigar o erro por meio do objeto de erro.