es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El iPhone se está calentando mucho y la aplicación se retrasa y se bloquea con los anuncios intersticiales de AdMob.

Tengo problemas graves con la implementación de Admob. He seguido la documentación oficial, pero después de jugar mi juego durante un tiempo, el teléfono empieza a calentarse mucho y luego la aplicación se vuelve lenta y se bloquea.

Estoy 100% seguro de que se debe a la gran cantidad de anuncios intersticiales de Admob que se muestran. Ya que la aplicación funciona perfectamente sin ellos.

Admito que hay muchos anuncios si juegas durante un tiempo, pero desactivarlos no es una opción ya que son la principal fuente de ingresos de la aplicación.

Este es el código que uso para cargar y mostrar los anuncios:

- (void)loadInterstitial {
    [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-xxx/xxx" request:[GADRequest request] completionHandler:^(GADInterstitialAd *ad, NSError *error) {
        if (error) {
            NSLog(@"Error al cargar el anuncio intersticial: %@", 

); return; } self.interstitial.fullScreenContentDelegate = nil; self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; } - (void)displayInterstitial { if (self.interstitial) { [self.interstitial presentFromRootViewController:self]; adCount = 0; [[NSUserDefaults standardUserDefaults] setInteger:adCount forKey:@"adCount"]; [[NSUserDefaults standardUserDefaults] synchronize]; } else { NSLog(@"El anuncio no estaba listo"); } } - (void)adDidDismissFullScreenContent:(nonnull id<gadfullscreenpresentingad>)ad { [self loadInterstitial]; }

Nada especial. Me parece que la memoria se sobrecarga después de mostrar una gran cantidad de anuncios intersticiales, ¿hay alguna forma de eliminarlos después de mostrarlos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en iOS y Objective-C especializado en Admob, he experimentado problemas similares con los anuncios intersticiales de Admob que causan retrasos y bloqueos de la aplicación debido a una sobrecarga de memoria.

    En primer lugar, es importante tener en cuenta que varios anuncios intersticiales pueden consumir una cantidad significativa de memoria, y la carga y presentación repetida de anuncios podría hacer que el teléfono se caliente y la aplicación se ejecute lentamente.

    Una forma de abordar este problema es implementar una estrategia de gestión de memoria que asegure que los anuncios intersticiales se eliminen de manera efectiva después de ser mostrados. Por ejemplo, podrías elegir selectivamente mostrar el anuncio intersticial cuando se cumplan condiciones específicas, como al finalizar un nivel o misión del juego, en lugar de después de cada sesión de juego.

    Otra forma es descargar explícitamente el anuncio intersticial después de ser mostrado. Una forma de hacer esto es establecer la propiedad interstitial como nil después de presentar el anuncio, lo cual libera cualquier memoria asociada con el anuncio intersticial.

    He reescrito tus métodos loadInterstitial y displayInterstitial de la siguiente manera, incorporando una función para eliminar el anuncio intersticial:

    - (void)loadInterstitial {
        [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-xxx/xxx" request:[GADRequest request] completionHandler:^(GADInterstitialAd *ad, NSError *error) {
            if (error) {
                NSLog(@"Error al cargar el anuncio intersticial: %@", [error localizedDescription]);
                return;
            }
            self.interstitial = ad;
        }];
    }
    
    - (void)displayInterstitial {
        if (self.interstitial) {
            [self.interstitial presentFromRootViewController:self];
            adCount = 0;
            [[NSUserDefaults standardUserDefaults] setInteger:adCount forKey:@"adCount"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            [self disposeInterstitial];
        } else {
            NSLog(@"El anuncio no estaba listo");
        }
    }
    
    - (void)disposeInterstitial {
        self.interstitial.fullScreenContentDelegate = nil;
        self.interstitial = nil;
    }
    
    - (void)adDidDismissFullScreenContent:(nonnull id<gadfullscreenpresentingad>)ad {
        [self loadInterstitial];
    }
    

    Espero que esto te ayude a resolver los problemas causados por los anuncios intersticiales de Admob, como el retraso, el sobrecalentamiento y los bloqueos de la aplicación.

Comments are closed.