Los anuncios intersticiales son anuncios de pantalla completa que cubren la interfaz de una app hasta que el usuario los cierra. Por lo general, se muestran en puntos de transición naturales en el flujo de una app, como entre actividades o durante la pausa que se hace entre los niveles de un juego. Cuando una app muestra un anuncio intersticial, el usuario puede presionar el anuncio y continuar hasta su destino, o bien cerrarlo y regresar a la app. Caso de éxito.
En esta guía, se muestra cómo integrar anuncios intersticiales en una app para iOS.
Requisitos previos
- Completar la guía de introducción
Haz siempre una comprobación con anuncios de prueba
Al compilar y verificar tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción. De lo contrario, se podría suspender tu cuenta.
La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios intersticiales para iOS:
ca-app-pub-3940256099942544/4411468910
Está configurado especialmente para devolver anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps durante las tareas de programación, prueba y depuración. Solo asegúrate de reemplazarlo por tu propio ID de unidad de anuncios antes de publicar la app.
Consulta la página Habilita los anuncios de prueba para obtener más información sobre cómo funcionan esos anuncios del SDK de anuncios para dispositivos móviles.
Implementación
Estos son los pasos principales para integrar anuncios intersticiales:
- Carga un anuncio.
- Regístrate para recibir devoluciones de llamada.
- Muestra el anuncio.
Carga un anuncio
Para cargar un anuncio, se usa el método load(adUnitID:request)
en la clase GADInterstitialAd
.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest request]
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
Regístrate para recibir devoluciones de llamada
Para recibir notificaciones de eventos de presentación, debes asignar GADFullScreenContentDelegate to the
a la propiedad fullScreenContentDelegate` del anuncio devuelto:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
El protocolo GADFullScreenContentDelegate
controla las devoluciones de llamada para cuando el anuncio se presenta correctamente o con errores, y cuando se descarta. En el siguiente código, se muestra cómo implementar el protocolo:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
GADInterstitialAd
es un objeto de un solo uso. Esto significa que, una vez que se muestra un anuncio intersticial, no se puede volver a mostrar. Una práctica recomendada consiste en cargar otro anuncio intersticial en el método adDidDismissFullScreenContent:
, en GADFullScreenContentDelegate
, para que el siguiente anuncio intersticial comience a cargarse en cuanto se descarte el anterior.
Muestra el anuncio
Los anuncios intersticiales se deberían mostrar durante las pausas naturales del flujo de una app. Un buen ejemplo es hacerlo entre los niveles de un juego o después de que el usuario completa una tarea.
Swift
ad.present(from: self!)
SwiftUI
Escucha los eventos de la IU en la vista para determinar cuándo mostrar el anuncio.
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
Presenta el anuncio intersticial desde el modelo de vista:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
Prácticas recomendadas
- Considera si los anuncios intersticiales son el tipo de anuncio adecuado para tu app.
- Los anuncios intersticiales funcionan mejor en las apps que tienen puntos de transición naturales. La conclusión de una tarea en una app, como compartir una imagen o completar un nivel de un juego, crea un punto de transición. Como el usuario espera una pausa en la acción, es fácil presentar un anuncio intersticial sin interrumpir la experiencia. Asegúrate de tener en cuenta en qué puntos del flujo de trabajo de tu app mostrarás anuncios intersticiales y de qué manera es probable que responda el usuario.
- Recuerda detener la acción cuando muestres un anuncio intersticial.
- Existen varios tipos distintos de anuncios intersticiales: de texto, con imagen, de video y muchos más. Es importante asegurarse de que, cuando tu app muestre un anuncio intersticial, también suspenda el uso de algunos recursos para permitir que el anuncio los aproveche. Por ejemplo, cuando realices una llamada para mostrar un anuncio intersticial, asegúrate de detener cualquier salida de audio que produzca tu app. Puedes reanudar la reproducción de sonidos en el controlador de eventos
adDidDismissFullScreenContent:
, que se invocará cuando el usuario termine de interactuar con el anuncio. Además, considera detener temporalmente cualquier tarea de procesamiento intensa (como un bucle de juego) mientras se muestra el anuncio. Esto garantizará que el usuario no experimente gráficos lentos o que no respondan, ni videos con saltos. - Permite que transcurra un tiempo de carga adecuado.
- Además de asegurarte de mostrar anuncios intersticiales en un momento adecuado, también es importante que el usuario no tenga que esperar a que se carguen. Cargar el anuncio tiempo antes de que quieras mostrarlo puede garantizar que tu app tenga un anuncio intersticial completamente cargado y listo cuando llegue el momento de mostrarlo.
- No satures al usuario con anuncios.
- Si bien aumentar la frecuencia de los anuncios intersticiales en tu app puede parecer una excelente manera de aumentar los ingresos, también puede perjudicar la experiencia del usuario y reducir las tasas de clics. Asegúrate de que los usuarios no experimenten interrupciones tan frecuentes que ya no le permitan disfrutar del uso de tu app.
- No uses la devolución de llamada de finalización de carga para mostrar el anuncio intersticial.
- Esto puede provocar una mala experiencia del usuario. En cambio, precarga el anuncio antes de que necesites mostrarlo. Luego, verifica el método
canPresentFromRootViewController:error:
enGADInterstitialAd
para saber si el anuncio está listo para mostrarse.
Recursos adicionales
Ejemplos en GitHub
Consulta los ejemplos completos de anuncios intersticiales en el lenguaje que prefieras:
Videos tutoriales de Mobile Ads Garage
Historias de éxito
Próximos pasos
- Si todavía no lo hiciste, crea tu propia unidad de anuncios intersticiales en la IU de AdMob.
- Obtén más información sobre la segmentación de anuncios y las guías de anuncios intersticiales.
- Obtén más información sobre la privacidad del usuario.