2010-09-07 3 views
1

J'essaie d'inclure des iAds dans mon application. Cela fonctionne bien quand il y a une connexion réseau, mais les iAds ne se cachent pas quand le réseau n'est pas disponible .. s'il vous plaît trouver le code ci-dessous et aidez-moi .. merci pour votre temps ..Cacher les iAds sur iPhone lorsqu'il n'y a pas de connexion réseau

J'ai inclus ce code dans viewDidLoad

static NSString * const kADBannerViewClass = @"ADBannerView"; 
    if (NSClassFromString(kADBannerViewClass) != nil) { 
    if (self.adView == nil) { 
    self.adView = [[[ADBannerView alloc] init] autorelease]; 
    self.adView.delegate = self; 
    self.adView.frame = CGRectMake(0,355,320,60); 
    self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
    } 
    } 
    [self.view addSubview:self.adView]; 

méthodes de délégué:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
if (!self.bannerIsVisible) { 
    [UIView beginAnimations:nil context:NULL]; 
    banner.frame = CGRectOffset(banner.frame, 0,10); 
    [UIView commitAnimations]; 
    self.bannerIsVisible = YES; 
} 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
if (self.bannerIsVisible) { 
    [UIView beginAnimations:nil context:NULL]; 
    banner.frame = CGRectOffset(banner.frame, 0, -10); 
    [UIView commitAnimations]; 
    self.bannerIsVisible = NO; 
    NSLog(@"%@",error); 
} 
} 

Répondre

9

Si je comprends bien votre code, vous montrent d'abord la bannière. Ce n'est pas correct. Il est préférable de déplacer d'abord la bannière hors écran, puis de la déplacer à l'écran lorsque vous recevez bannerViewDidLoadAd: et de revenir en arrière hors écran lorsque vous recevez bannerView:didFailToReceiveAdWithError:.

Cela présente également l'avantage que votre bannière ne s'affiche pas initialement vide. Ce qui peut arriver s'il y a une connexion réseau lente.

+0

merci pour le reply..so dans le viewDidLoad dois-je mettre bannerIsVisible NO ?? – racharambola

+0

J'ai essayé mais je pense que j'ai fait une erreur .. Je rencontre exactement ce que vous avez dit .. initialement pendant un certain temps il se révèle vide et plus tard charge la vue .. si vous s'il vous plaît ne me dérange pas s'il vous plaît me suggérer faire des changements dans le code que j'ai écrit – racharambola

+3

Non dans 'viewDidLoad' vous placez le hors écran. Donc, ce serait à la position '(0,460)' si vous avez juste une barre d'état. Ensuite, lorsque l'annonce est chargée, vous animez toute la vue de l'annonce de 50 pixels. Et réduisez votre contenu également de 50 pixels. Consultez les vidéos et les diapositives de la session WWDC iAds (gratuite), elle décrit cette technique en détail. –

0

You can do like this

Hide banner during viewdidload and write this in .m file.

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
    NSLog(@"Error loading iAd"); 
} 

-(void)bannerViewDidLoadAd:(ADBannerView *)banner{ 
    NSLog(@"Ad loaded"); 
    self.banner.hidden = NO; 
} 

-(void)bannerViewWillLoadAd:(ADBannerView *)banner{ 
    NSLog(@"Ad will load"); 
    self.banner.hidden = NO; 
} 

-(void)bannerViewActionDidFinish:(ADBannerView *)banner{ 
    NSLog(@"Ad did finish"); 
    self.banner.hidden = NO; 
}