Compartir a través de


Mostrar anuncios intersticiales en iOS

Esta página tiene instrucciones y ejemplos de código para mostrar anuncios intersticiales en iOS.

Información general

Mostrar anuncios intersticiales requiere un poco más de esfuerzo. Además de viewDidLoad implementar como hicimos en el ejemplo de banner, debemos implementar el adDidReceiveAd método delegado. En la sección siguiente se explica el tema en detalles con ejemplos de código.

Proceso

  1. Llame loadAd a para capturar el contenido del anuncio de nuestro servidor y almacenarlos en caché localmente. Tenga en cuenta que cualquier contenido de anuncio se representa en una vista web en el momento en que se captura desde el servidor de anuncios y se almacena en caché. Esto significa que cualquier píxeles de seguimiento de terceros que formen parte del contenido del anuncio se desencadenará en el momento de la llamada a loadAd, no cuando la llamada a displayAdFromViewController se realice más adelante.
  2. Cuando el contenido del anuncio se recibe realmente desde el servidor de anuncios, se desencadena la implementación de la adDidReceiveAd devolución de llamada. En el ejemplo siguiente, llamamos displayAdFromViewController inmediatamente, pero la implementación podría esperar hasta que sea más conveniente que la aplicación muestre el anuncio intersticial. Tenga en cuenta que la llamada a displayAdFromViewController debe producirse dentro de aproximadamente 4 minutos de la llamada a para loadAd que Xandr cuente la impresión.

Nota:

El botón cerrar aparece después de diez segundos de forma predeterminada. Puede establecer el retraso mediante ANInterstitialAd.setCloseDelay.

Para obtener más información, vea el ejemplo de código siguiente.

Tipos de medios creativos admitidos en la unidad de anuncios intersticiales

Tipo de medio Descripción
Banner Se recomienda para la mayoría de las ubicaciones intersticiales para maximizar la demanda. Adecuado para banners estáticos o animados.
Intersticial Se usa para anuncios a pantalla completa, incluidas imágenes estáticas, MRAID y formatos con capacidad de respuesta HTML.
VÍDEO VAST Admite anuncios de vídeo a partir de la versión 9.1.0. Ideal para servir creatividades de vídeo cuando la ubicación está habilitada para la demanda de vídeo.

Ejemplo de código

En los ejemplos de código intersticial siguientes se muestra cómo solicitar anuncios mediante el identificador de ubicación.

Nota:

A partir de la versión RC2.8, puede inicializar intersticiales mediante una combinación de identificador de miembro y código de inventario en lugar del identificador de ubicación, aunque todavía se admite. Este es el método que muestra la inicialización mediante el código de inventario y el identificador de miembro:

// iOS: ObjC code that uses inventory code and member ID instead of placement ID (optional)
-(instancetype)initWithMemberId:(NSInteger)memberId inventoryCode:(NSString *)inventoryCode;
 

Ejemplo de código (Objective C)

// iOS: ObjC code to show an interstitial ad
#import "ViewController.h"
#import "ANInterstitialAd.h"
@interface ViewController () <ANInterstitialAdDelegate>
@property (nonatomic, strong)ANInterstitialAd *inter;
@end
@implementation ViewController : UIViewController
- (void)viewDidLoad {
    self.inter = [[ANInterstitialAd alloc] initWithPlacementId:@"1326299"];
    
    // set ourselves as the delegate so we can respond to the required adDidReceiveAd
    // message of the `ANAdDelegate protocol' (see implementation below)
    self.inter.delegate = self;
    
    // Load an ad!
    [self.inter loadAd];
}
- (void)adDidReceiveAd:(id<ANAdProtocol>)ad {
    [self.inter displayAdFromViewController:self];
}
- (void)adFailedToDisplay:(ANInterstitialAd *)ad {
    NSLog(@"Uh oh, the ad failed to display!");
}
@end

Ejemplo de código (Swift)


// iOS: Swift code to show an interstitial ad
// Import ANInterstitialAd.h in the bridging header.
class ViewController: UIViewController, ANInterstitialAdDelegate {
  let inter = ANInterstitialAd.init(placementId: "1326299")
  override func viewDidLoad() {
    super.viewDidLoad()
    // Set ourselves as the delegate so we can respond to the required adDidReceiveAd
    // message of the ANAdDelegate protocol (see implementation below).
    inter.delegate = self
    // Load an ad!
    inter.loadAd()
  }
  // ANInterstitialAdDelegate
  extension InterstitialViewController: ANInterstitialAdDelegate {
    // - (void)adDidReceiveAd:(nonnull id)ad;
    func adDidReceiveAd(_ ad: Any) {
      appNexusIntersitial?.display(from: self)
    }
    // - (void)ad:(nonnull id)loadInstance didReceiveNativeAd:(nonnull id)responseInstance;
    func ad(_ ad: Any, requestFailedWithError error: Error) {
    }
  }
}

Uso de tamaños intersticiales personalizados

De forma predeterminada, si no especifica un tamaño de anuncio, el SDK capturará los anuncios en cualquiera de los tamaños siguientes que sean menores o iguales que el tamaño de la pantalla del dispositivo.

  • 1x1 (siempre enviado)
  • Tamaño detectado de la pantalla (siempre enviado)
  • 300x250
  • 320x480
  • 900x500
  • 1024x1024

Si desea mostrar anuncios intersticiales en tamaños distintos de los predeterminados, establezca la allowedAdSizes propiedad en ANInterstitialAd. Tenga en cuenta que el tamaño detectado de la pantalla se seguirá pasando como el tamaño principal. Los tamaños establecidos mediante la allowedAdSizes propiedad se pasarán como promo_sizes en la ubicación y reemplazarán los valores predeterminados de 300x250 y 320x480.

Cierre automático de un intersticial

Si quieres cerrar automáticamente un anuncio intersticial después de un período de tiempo de espera específico, no llames a displayAdFromViewController como se describe en las secciones anteriores. En su lugar, llame a displayAdFromViewController:(UIViewController *)controller autoDismissDelay:(NSTimeInterval)delay. En los ejemplos siguientes se establece el número de segundos que se muestra el intersticial antes de que se cierre en 10 segundos.

// This will show an interstitial ad, wait for 10 seconds, then auto close it.
 [self.interstitial displayAdFromViewController:self autoDismissDelay:10];