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

Requisitos previos

En esta guía de implementación, se supone que estás familiarizado con los siguientes temas:

Descripción general

En este documento, se describe el proceso a fin de integrar anuncios de AFS para aplicaciones para dispositivos móviles (AFSMA) en tu app para dispositivos móviles para iOS. A veces, los anuncios de AFSMA también se denominan anuncios dinámicos de búsqueda de altura. 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. GADSearchBannerView realiza la solicitud de un anuncio con un GADDynamicHeightSearchRequest y renderiza los anuncios que se muestran. El GADSearchBannerView debe agregarse a cualquiera de las vistas existentes de la app. Por lo general, es el controlador de vista superior el que contiene la vista a la que se agrega el GADSearchBannerView. Se deben establecer los delegados adecuados en GADSearchBannerView.
  • Se debe crear una instancia de GADSearchBannerView con initWithAdSize:kGADAdSizeFluid para solicitar anuncios AFSMA. Crear una instancia de GADSearchBannerView con initWithAdSize:kGADAdSizeBanner solicita anuncios de AFSMA heredados.
  • La propiedad adUnitID de este objeto debe establecerse con el código de tu propiedad.

GADDynamicHeightSearchRequest

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

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

  • Se llama a esta devolución de llamada cuando se muestra la solicitud de anuncio. Dado que la unidad de anuncios que se muestra puede contener varios anuncios con diferentes extensiones, se desconoce el tamaño exacto de la unidad 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 de la unidad de anuncios. El código para cambiar el tamaño del GADSearchBannerView en su vista superior debe implementarse aquí.

Ejemplo de implementación

En el siguiente ejemplo, se muestra cómo usar un GBannerViewController para crear un GADSearchBannerView como una subvista de un UIScrollView. Para solicitar anuncios de AFSMA de forma correcta, se debe 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 una GADDynamicHeightSearchRequest que dicte los parámetros del anuncio que se renderizará en la 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 anuncio se pueden configurar mediante propiedades en el objeto GADDynamicHeightSearchRequest (searchRequest más arriba). Otros parámetros deberán configurarse 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 parámetros disponibles.

Investiga los errores

GADBannerViewDelegate contiene una devolución de llamada para ayudarte a investigar los 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 falla una solicitud de anuncio, puedes usar esta devolución de llamada para solucionar el error correctamente e investigarlo a través del objeto de error.