Implementación de AFS para aplicaciones para dispositivos móviles (AFSMA) para iOS

Requisitos previos

En esta guía de implementación, se da por sentado que estás familiarizado con lo siguiente:

Descripción general

En este documento, se describe el proceso de integración de los anuncios de AFS para aplicaciones para dispositivos móviles (AFSMA) en tu app para dispositivos móviles con iOS. A veces, estos anuncios también se conocen como anuncios de búsqueda de altura dinámica. Para solicitar y renderizar anuncios de AFSMA en iOS, deberás implementar lo siguiente:

GADSearchBannerView

  • Esta clase se hereda de la clase UIView de iOS y muestra los anuncios de AFSMA. El GADSearchBannerView realiza la solicitud de un anuncio con un GADDynamicHeightSearchRequest y procesa los anuncios que se muestran. Se debe agregar la GADSearchBannerView a cualquiera de las vistas existentes de la app. Por lo general, es el controlador de vista superior que contiene la vista a la que se agrega la GADSearchBannerView. Se deben establecer los delegados adecuados en GADSearchBannerView.
  • Para crear anuncios de AFSMA, es necesario crear una instancia de GADSearchBannerView con initWithAdSize:kGADAdSizeFluid. La creación de instancias de GADSearchBannerView con initWithAdSize:kGADAdSizeBanner solicita anuncios AFSMA heredados.
  • La propiedad adUnitID de este objeto se debe establecer en tu código de propiedad.

GADDynamicHeightSearchRequest

  • Este objeto encapsula los parámetros de solicitud de anuncio. Esto es similar a la configuración de parámetros en los objetos de solicitud de anuncio de JavaScript (opciones de página, opciones de unidades) para AFS de escritorio y la Web móvil.

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

  • Se llama a esta devolución de llamada cuando se muestra la solicitud de anuncio. Dado que el bloque de anuncios que se muestra puede contener una cantidad de anuncios con diferentes extensiones, se desconoce el tamaño exacto del bloque de anuncios cuando se realiza la solicitud de anuncio. Una vez que se muestra el anuncio, la vista del banner debe actualizarse para adaptarse al nuevo tamaño del bloque de anuncios. Aquí se debe implementar código para cambiar el tamaño de GADSearchBannerView en su vista superior.

Ejemplo de implementación

En el siguiente ejemplo, se muestra cómo usar un GBannerViewController para crear un GADSearchBannerView como subvista de un UIScrollView. Para solicitar los anuncios de AFSMA de manera correcta, debes crear una instancia del objeto GADSearchBannerView con 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];
  }

Dentro de la misma GBannerViewController, crea un GADDynamicHeightSearchRequest que dicte los parámetros del anuncio que se renderizará en 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"];

Puedes configurar otras opciones de personalización si configuras propiedades adicionales en el objeto GADDynamicHeightSearchRequest.

Para realizar una solicitud de anuncio, llama a loadRequest con el objeto GADDynamicHeightSearchRequest desde el objeto GADSearchBannerView:

[self.searchBannerView loadRequest:searchRequest];

Para que la vista superior se adapte correctamente al elemento GADSearchBannerView una vez que se muestran los anuncios, se debe implementar la siguiente devolución de llamada.

// 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.
  ...
}

Opciones avanzadas

La mayoría de los parámetros de solicitud de anuncios se pueden establecer mediante propiedades en el objeto GADDynamicHeightSearchRequest (searchRequest en la parte superior). Otros parámetros deberán establecerse mediante pares clave-valor con el 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"];

Consulte la lista completa de los parámetros disponibles.

Investiga errores

GADBannerViewDelegate contiene una devolución de llamada para ayudarte a investigar errores:

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

Si una solicitud de anuncio falla, puedes usar esta devolución de llamada para manejar correctamente el error y, luego, investigar el error a través del objeto de error.