Carga diferida para iOS
La característica Carga diferida proporciona una nueva llamada API para administrar cuando se desencadenan todos los rastreadores, incluidos los rastreadores de terceros y los rastreadores de Mobile SDK. También optimiza Banner AdUnit al permitir que la aplicación host cargue su vista web solo cuando sea necesaria y justo antes de que sea necesaria. Cuando esta característica está habilitada, el método loadAd tradicional va seguido más adelante de un segundo método, loadLazyAd.
La característica Carga diferida se ha desarrollado para activar todos los seguimientos de terceros y sdk de Mobile en la misma instancia, lo que garantiza que se pueda mantener una alineación entre ambas métricas. Esta característica divide el proceso de carga de AdUnit en dos pasos como loadAd y loadLazyAd.
El ciclo de vida de alto nivel de una AdUnit consta de dos fases como carga y visualización. Esta característica divide la fase de carga en dos pasos adicionales como loadAd y loadLazyAd, seguidos de la fase de presentación . Dicho esto, se puede adjuntar una vista web de banner a la pantalla, incluso antes de que se llame a loadAd . Sin embargo, la fase de visualización es una comodidad proporcionada por la plataforma y es independiente de la parte de carga del ciclo de vida de AdUnit.
El segundo paso loadLazyAd en la fase de carga realiza dos tareas:
- Completa la carga de AdUnit creando y cargando la vista web que activa los rastreadores de terceros en la creatividad.
- Activa los rastreadores de Mobile SDK.
La característica Carga diferida hace que el loadAd inicial devuelva una AdUnit ligera y permite cargar el contenido más adelante. Esta funcionalidad reduce el tiempo de carga de AdUnit aplazando la creación y configuración de la vista web interna a un punto posterior. Al retrasar la carga de la vista web, reduce el consumo de tiempo adicional de CPU de carga del objeto de anuncio devuelto en la etiqueta universal en los casos en los que la AdUnit no se usa.
Además, permite que la aplicación host elija el momento óptimo para activar rastreadores y consumir tiempo de CPU para cargar la vista web, idealmente en el mejor momento posible antes de que el anuncio se muestre al usuario final (o esté en cola para mostrarse con una alta probabilidad).
El ámbito de esta característica se limita a Las unidades de anuncio de Banner que muestran banner y tipos de medios del representador de ensamblado nativo. No se aplica a ninguna otra AdUnit, incluido el vídeo en secuencia y nativo, ni se aplica a los tipos de medios devueltos por una AdUnit de banner de formato múltiple que no sea banner y representador de ensamblado nativo, incluido banner-video (vídeo de salida) y banner nativo.
Carga diferida mejora la API pública de Mobile SDK con una propiedad que indica si la característica está habilitada o no y si no la habilita.
Propiedad | Tipo | Atributo | Description |
---|---|---|---|
enableLazyLoad |
BOOL | readwrite | Indica si la carga diferida está habilitada y, si no, habilitar la misma. |
@property (nonatomic, readwrite) BOOL enableLazyLoad
Carga la vista web de una AdUnit cargada diferida y activa todos los rastreadores, incluidos los rastreadores de terceros y del SDK de Mobile.
(BOOL) loadLazyAd;
lazyAdDidReceiveAd se desencadena cuando el método loadAd devuelve correctamente una AdUnit cargada diferida, es decir, una AdUnit con una vista web sin asignar. Todas las demás características de la instancia de AdUnit están disponibles, incluida una instancia rellenada de ANAdResponseInfo. Si se produce un error en loadAd , se usan las mismas devoluciones de llamada que para una AdUnit que no se cargó diferida.
(void)lazyAdDidReceiveAd:(nonnull id)ad;
@property (nonatomic, strong, nullable) ANBannerAdView *lazyBanner;
// ...
- (void)viewDidLoad
{
NSString *placementID = @"1234567";
CGRect rect = CGRectMake(...); //Set location on display.
CGSize size = CGSizeMake(...); //Set size of AdUnit.
// Create and configure banner ad view; attach to view hierarchy.
//
ANBannerAdView *banner = [ANBannerAdView adViewWithFrame:rect placementId:placementID adSize:size];
/* native assebly renderer
self.banner.shouldAllowNativeDemand = YES;
self.banner.enableNativeRendering = YES;
*/
self.lazyBanner = banner;
self.lazyBanner.delegate = self; self.lazyBanner.enableLazyLoad = YES; [self.view addSubview:self.lazyBanner]; // Begin the load of AdUnit. // [self.lazyBanner loadAd]; } // ... - (void)readyToDisplayLazyBanner { // Complete the load of AdUnit. // [self.lazyBanner loadLazyAd]; } // // ANAdProtocol delegate methods. // - (void)adDidReceiveAd:(id)ad { // Optional processing when lazy banner webview completes loading. } - (void)lazyAdDidReceiveAd:(id)ad { // Optional Processing when lazy banner is received. }
// ...
- (void)readyToDisplayLazyBanner
{
// Complete the load of AdUnit.
//
[self.lazyBanner loadLazyAd];
}
//
// ANAdProtocol delegate methods.
//
- (void)adDidReceiveAd:(id)ad
{
// Optional processing when lazy banner webview completes loading.
}
- (void)lazyAdDidReceiveAd:(id)ad
{
// Optional Processing when lazy banner is received.
}
import UIKit
import AppNexusSDK
class BannerAdViewController: UIViewController , ANBannerAdViewDelegate{
var banner: ANBannerAdView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.title = "Banner Ad"
let adWidth: Int = 300
let adHeight: Int = 250
let adID = ""
// We want to center our ad on the screen.
let screenRect: CGRect = UIScreen.main.bounds
let originX: CGFloat = (screenRect.size.width / 2) - CGFloat((adWidth / 2))
let originY: CGFloat = (screenRect.size.height / 2) - CGFloat((adHeight / 2))
// Needed for when we create our ad view.
let rect = CGRect(origin: CGPoint(x: originX,y :originY), size: CGSize(width: adWidth, height: adHeight))
let size = CGSize(width: adWidth, height: adHeight)
// Make a banner ad view.
self.banner = ANBannerAdView(frame: rect, placementId: adID, adSize: size)
self.banner?.rootViewController = self
self.banner?.delegate = self
/* native assebly renderer
self.banner?.shouldAllowNativeDemand = true
self.banner?.enableNativeRendering = true
*/
self.banner?.enableLazyLoad = true
// Load an ad.
self.banner?.loadAd()
}
func adDidReceiveAd(_ ad: Any) {
print("Ad did receive ad")
view.addSubview(self.banner!)
}
func ad(_ ad: Any, requestFailedWithError error: Error) {
print("Ad request Failed With Error")
}
func lazyAdDidReceiveAd(_ ad: Any) {
self.banner?.loadLazyAd()
}
}