Implementación nativa de AFS para iOS

El SDK de anuncios de Google para dispositivos móviles también admite estilos del anuncio de búsqueda personalizados. Si tu app ya usa el SDK de anuncios de Google para dispositivos móviles, te recomendamos que utilices la versión del SDK de AFSMA en su lugar.

Requisitos previos

  • Usa Xcode 8.0 o una versión más reciente
  • Orientación a iOS 8.0 o versiones posteriores
  • Un código de propiedad web del publicador válido (p.ej., vert-ppa-test1-srp)
  • CocoaPods

Importa el SDK nativo de AFS

CocoaPods

Importa el SDK nativo de Google-AFS a un proyecto de iOS con CocoaPods. Abre el archivo Podfile de tu proyecto y agrega esta línea al destino de tu app:

pod 'Google-AFSNative'

Luego, desde la línea de comandos, ejecuta lo siguiente:

pod install --repo-update

Si es la primera vez que usas CocoaPods, consulta su documentación oficial para obtener información sobre cómo crear y usar Podfiles.

Descripción general

Si actualizas desde la versión 2.0.8 o una anterior a una posterior, consulta nuestra guía de migración.

En este documento, se describe el proceso de integración de anuncios nativos de AFS en tu app para dispositivos móviles para iOS.

GANSearchAdController

  • Se debe proporcionar el código de propiedad web del publicador, el ID de configuración deseado y el objeto GANSearchAdControllerOptions asociado al constructor GANSearchAdController.
  • Cada llamada a loadAds() indica una búsqueda nueva, lo que hará que el conjunto actual de anuncios se descarte y se invalide.
  • Las creatividades de los anuncios se almacenan en GANAdView.
  • Los anuncios se insertan en el anuncio GANAdView con el método populateAdView. Además del GANAdView que se propagará, el llamador proporciona un adIdentifier, que es una string arbitraria que debe identificar el anuncio de manera única. Dentro de la API, se asigna un anuncio específico a cada adIdentifier que se pasa. Luego, cada vez que se vuelva a pasar esa adKey en el futuro, se mostrará el mismo anuncio. Por ejemplo, si se llama a populateAdView por primera vez con adIdentifier "keyA", cada llamada posterior a populateAdView mientras se pasa "keyA" como adIdentifier, se mostrará el mismo anuncio.

GANAdView

  • Esta es la UIView que contiene la creatividad del anuncio.
  • Propaga esta vista con un anuncio mediante el método populateAdView en GANSearchAdController.

GANSearchAdControllerOptions

  • Pasa este objeto al constructor GANSearchAdController para especificar el comportamiento de cómo se solicitan y muestran los anuncios.

GANSearchAdRequest

  • Llama al método loadAds en la instancia GANSearchAdController con este objeto para realizar una solicitud de anuncio.

GANSearchAdControllerDelegate

  • Implementa esta interfaz y proporciónala a GANSearchAdController a fin de registrar devoluciones de llamada para varios estados.

Ejemplo de implementación

En el siguiente ejemplo, se muestra cómo crear un GANSearchAdController y un GANView para mostrar un anuncio en un ViewController de muestra.

// SampleAppViewController.m implementation

#import <AFSNative/AFSNative.h>

@interface GBannerViewController () {
  // The Ad Controller used by the sample application.
  GANSearchAdController *_adController;

  // The Ad View to display the loaded ad.
  GANAdView *_adView;
}
// scrollView will be where we place our ads in this example.
@property(nonatomic, strong) UIScrollView *scrollView;
@end
...

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ...
  [self.view addSubview:scrollView];

  // Create a test button and link the ad request to its action.
  UIButton *loadBannerButton = [UIButton buttonWithType:UIButtonTypeCustom];
  ...
  [loadBannerButton addTarget:self
                       action:@selector(loadAd:)
             forControlEvents:UIControlEventTouchUpInside];
  [self.scrollView addSubview:loadBannerButton];

  // Construct the Ad Controller.
  GANSearchAdControllerOptions *options = [[GANSearchAdControllerOptions alloc] init];
  options.prefetchEnabled = YES;
  options.adType = GANSearchAdTypeSPA;
  options.adFetchCount = 3;

  _adController = [[GANSearchAdController alloc]
                     initWithPublisherID: @"your-client-id"
                                 styleID: @"your-settings-id"
                                 options: options
                                delegate: self];

  _adView = [_adController adView];
  [self.scrollView addSubview:_adView];
}

// Request ads when the test button is pressed.
- (void)loadAd:(id)sender {
  // Construct the Ad Request.
  GANSearchAdRequest *adRequest = [[GANSearchAdRequest alloc] init];
  adRequest.query =  @"some-query";
  // Start loading ads. Note that the loading is asynchronous.
  [_adController loadAds: adRequest];
}

// Insert ads into GANAdView if the request returns successfully.
- (void)searchAdController:(GANSearchAdController *)adController  
                didLoadAds:(NSInteger)numberOfAds {
  if (numberOfAds <= 0) {
    NSLog(@"No ads found on the server");
  } else {
    [_adController populateAdView:_adView identifier:@"demoAd"];
  }
}
...