iAds: bannerViewDidLoadAd больше не вызывается после первого didFailToReceiveAdWithError - PullRequest
2 голосов
/ 13 июля 2011

Я тестирую iAds в XCode 4.

Все работает нормально, пока в первый раз не будет получен bannerView:didFailToReceiveAdWithError:, на что я реагирую, сдвинув баннер с экрана.

//move the ad back off the screen if an error occurs
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    if (self.bannerIsInScreenBounds)
    {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        // move the banner view off the screen.
        banner.frame = CGRectOffset(banner.frame, 320, 0);
        [UIView commitAnimations];
    }
}

После этого больше bannerViewDidLoadAd: сообщений не отправляются в ADBannerViewDelegate. Я записываю этот метод прямо вверху, он больше не вызывается.

Я не выпускаю баннер или что-то еще, а класс ADBannerViewDelegate все еще там и занимается другими делами.

Что может быть не так?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 13 июля 2011

ОК, не идеальное решение, но вот что я в итоге сделал.

Всякий раз, когда я получаю ошибку didFailToReceiveAdWithError, я жду 10 секунд (чтобы избежать спама из-за сбоев), а затем заново создаю баннер.

-(void)replaceAdView {
    UIView *adViewSuperview = [adView superview];
    [adView removeFromSuperview];
    [adView release];
    //starting off the screen again
    adView = [[NSClassFromString(@"ADBannerView") alloc] initWithFrame:CGRectMake(320, 382, 320, 50)];
    adView.delegate = self;
    if (adViewSuperview) {
        [adViewSuperview addSubview:adView];
    }
    self.bannerIsInScreenBounds = NO;
}
0 голосов
/ 15 декабря 2012

Как мой комментарий на о том, как реализовать делегат AdBannerview и ADBannerview , запуск приложения iphone в имитаторе ipad, я получил didFailToReceiveAdWithError сразу после установки делегата ADBannerView, и никогда больше не вызывал делегат. Запустив его на симуляторе iphone (или изменив цель приложения на универсальную), делегат вызывался только после добавления ADBannerView в качестве подпредставления, а затем делегировал вызовы каждые 30 секунд после этого.

0 голосов
/ 13 июля 2011

Почему вы ожидаете загрузки рекламы после возникновения ошибки - я думаю, что это правильное поведение.

Глядя на комментарии, видно, что ошибка «Операция не может быть завершена. Рекламный ресурс недоступен».

Как вы ожидаете, что он даст вам рекламу, если он не может найти рекламу, чтобы дать;)

...