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 su aplicación ya utiliza el SDK de anuncios de Google para dispositivos móviles, le recomendamos Versión del SDK de AFSMA en su lugar.

Requisitos previos

  • Usa Xcode 8.0 o una versión posterior
  • 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 Google-AFSNative SDK a un proyecto de iOS con CocoaPods. Abre el archivo Podfile 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 eres nuevo en CocoaPods, consulta su documentación oficial para obtener información sobre cómo crear y usar Podfiles.

Descripción general

Si estás actualizando a la versión 4.0 o a una posterior desde la versión 2.0.8 o una anterior, consulta nuestra guía de migración.

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

GANSearchAdController

  • El constructor GANSearchAdController debe contar con la el código de propiedad web del publicador, el ID de configuración deseado GANSearchAdControllerOptions.
  • Cada llamada a loadAds() indica una nueva búsqueda y hará que el estado conjunto de anuncios que se descartarán y se invalidarán.
  • Las creatividades de anuncios se almacenan en GANAdView.
  • Los anuncios se insertan en el GANAdView del anuncio con el método populateAdView. En Además de GANAdView, que se debe propagar, el llamador proporciona un adIdentifier, que es una cadena arbitraria que debería identificar el anuncio de forma única. Dentro de la API, se asigna un anuncio específico a cada adIdentifier que se pasa. en el que te etiquetaron. Así, cada vez que se vuelva a pasar esa adKey en el futuro, se transmitirá el mismo anuncio que se devuelven. Por ejemplo, si se llama a populateAdView por primera vez con adIdentifier "keyA", cada llamada posterior a populateAdView durante la transferencia “keyA” como el adIdentifier, se mostrará el mismo anuncio.

GANAdView

  • Esta es la UIView que contiene la creatividad del anuncio.
  • Rellena esta vista con un anuncio usando el método populateAdView de la GANSearchAdController

GANSearchAdControllerOptions

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

GANSearchAdRequest

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

GANSearchAdControllerDelegate

  • Implementa esta interfaz y proporciónala al GANSearchAdController para 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"];
  }
}
...