iAd оставил белый пустой экран после закрытия

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

Поскольку мне нужно поддерживать другие объявления для более низких версий ОС iPhone, я добавляю представление контейнера в верхней части приложений, контроллером представления которого является 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;
}
}

person Yuchen Wang    schedule 02.07.2010    source источник
comment
вы можете помочь мне в этом stackoverflow.com/questions/5953418/implementation-for-iad   -  person ajay    schedule 11.05.2011


Ответы (3)


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

person Yuchen Wang    schedule 03.07.2010

Когда баннер заканчивается, он перемещается в верхнюю часть экрана, даже если это означает отрицательную координату 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];
}
person drawnonward    schedule 18.07.2010

Привет, Дэвид! Я знаю, что вы имеете в виду, я также использую собственный AdvertisementViewController, который вызывает разные рекламные сети.

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

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

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

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

}

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

person Jan    schedule 16.03.2011