2010-07-02 5 views
3

У меня возникла проблема с интеграцией iAd в приложениях для iPhone - объявление в баннере прекрасно, когда оно расходуется (см. http://www.clingmarks.com/iAd1.png и http://www.clingmarks.com/iAd2.png), однако, когда я закрываю его, он оставил белый пробел экран (см. http://www.clingmarks.com/iAd3.png). Я не мог понять, почему. Вот как я интегрирую объявление:iAd оставил белый пустой экран после закрытия

Поскольку мне нужно поддерживать другие объявления для более низкой версии iPhone OS, я добавляю контейнерный вид в верхней части приложений, контроллер представлений которого является AdViewController. Когда представление загружено, я создаю AdBannerView программно и добавляю его в качестве подсмотра в AdViewController.view. Вот код в методе 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 
    } 

Ниже приведены методы делегата:

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

Вы можете помочь мне на этом http://stackoverflow.com/questions/5953418/implementation-for-iad – ajay

ответ

4

В конце концов я понял это сам. Оказывается, родительский вид ADBannerView должен быть полноэкранным. В моем случае выше, я добавил AdBannerView в свой adView, который представляет собой вид размером 320x50. Когда я изменил родительское представление на полноэкранный режим, все будет работать. Я не уверен, что это ошибка в iAd, но, конечно, что-то сложное.

1

Когда баннер заканчивается, он перемещается в верхнюю часть экрана, даже если это означает наличие отрицательной координаты y. Я центр баннера, когда он заканчивается. В моем случае есть контроллер просмотра только для баннера, поэтому при нажатии на него отображается только полный экран.

-(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! Я знаю, что вы имеете в виду, я также использую собственный рекламный контроллер, который вызывает разные рекламные сети.

Так что iAd не находится в полноэкранном режиме, а внутри 320x50.

Просто сделать это:

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

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

} 

Таким образом, внешний вид контейнера (self.view) изменяется до исходного размера. iAd изменяет размер в полноэкранном режиме для показа рекламы, когда отображается iAd.

Смежные вопросы