2010-07-02 4 views
3

J'ai eu un problème pour intégrer iAd dans mes applications iPhone - la bannière est bien quand elle dépense (voir http://www.clingmarks.com/iAd1.png et http://www.clingmarks.com/iAd2.png), mais quand je la ferme, elle laisse un blanc écran (voir http://www.clingmarks.com/iAd3.png). Je ne pouvais pas comprendre pourquoi. Voici comment je l'intègre:iAd a laissé l'écran vide blanc après fermé

Parce que je dois prendre en charge d'autres annonces pour la version inférieure des systèmes d'exploitation iPhone, j'ajoute une vue conteneur en haut des applications, dont le contrôleur de vue est AdViewController. Lorsque la vue est chargée, je crée un AdBannerView par programme et l'ajoute en tant que sous-vue à AdViewController.view. Voici le code dans la méthode viewDidLoad:

Class adClass = (NSClassFromString(@"ADBannerView")); 
if (adClass != nil) { 
    iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero]; 
    iAdView.frame = CGRectOffset(iAdView.frame, 0, -50); 
    iAdView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50]; 
    iAdView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
    iAdView.delegate = self; 
    iadViewIsVisible = NO; 
    [self.view addSubview:iAdView]; 
} else { 
     // init google adsense 
    } 

méthodes suivantes sont les délégués:

enter code here 
- (void)bannerViewDidLoadAd:(ADBannerView *)banner { 
if (!iadViewIsVisible) { 
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
    // banner is invisible now and moved out of the screen on 50 px 
    banner.frame = CGRectOffset(banner.frame, 0, 50); 
    [UIView commitAnimations]; 
    iadViewIsVisible = YES; 
} 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
if (iadViewIsVisible) { 
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
    // banner is visible and we move it out of the screen, due to connection issue 
    banner.frame = CGRectOffset(banner.frame, 0, -50); 
    [UIView commitAnimations]; 
    iadViewIsVisible = NO; 
} 
} 
+0

pouvez-vous m'aider sur ce http://stackoverflow.com/questions/5953418/implementation-for-iad – ajay

Répondre

4

Finalement j'ai tout compris moi-même. Il s'avère que la vue parent de ADBannerView doit être une vue en plein écran. J'ai mon cas ci-dessus, j'ai ajouté AdBannerView à mon adView, qui est une vue avec la taille 320x50. Lorsque j'ai changé sa vue parente en vue plein écran, tout fonctionne. Je ne suis pas sûr si c'est un bug dans iAd, mais certainement quelque chose de difficile.

1

Lorsque la bannière se termine, elle se déplace vers le haut de l'écran même si cela signifie que la coordonnée y est négative. Je centre la bannière quand elle se termine. Dans mon cas, il y a un contrôleur de vue pour seulement la bannière, donc c'est seulement en plein écran quand l'annonce est cliquée.

-(void) bannerViewActionDidFinish:(UIView *)inBanner { 
    CGRect      frame = [inBanner frame]; 

    frame.origin.x = frame.size.width * 0.5; 
    frame.origin.y = frame.size.height * 0.5; 

    [inBanner setCenter:frame.origin]; 
} 
1

Hey David! Je sais ce que vous voulez dire, je suis aussi en train d'utiliser un propre AdvertiserViewController qui appelle différents réseaux publicitaires.

Donc, iAd n'est pas en mode plein écran mais à l'intérieur d'une vue 320x50.

Il suffit de faire ceci:

-(void) bannerViewActionDidFinish:(ADBannerView *)inBanner { 

[self.view setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 50.0f)]; 

} 

Ainsi est redimensionnée le récipient de vue extérieur (self.view) à sa taille d'origine. iAd le redimensionne en plein écran pour afficher l'annonce lorsqu'un iAd est affiché.

Questions connexes