didFailToReceiveAdWithError никогда не срабатывает - PullRequest
0 голосов
/ 30 августа 2011

Это мой первый iAd для iPhone.

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

Но, если я запускаю приложение с отключенным аэропортом, я получаю событие bannerViewDidLoadAd. А если аэропорт включен - никогда не получайте didFailToReceiveAdWithError.

@interface ViewController : UIViewController <ADBannerViewDelegate> {

    ADBannerView* adView;
}
@property(nonatomic, retain) IBOutlet ADBannerView *adView;

...

- (void)viewDidLoad
{
    ...   (adView is from Interface Builder )
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    [self.view addSubview:adView];
    adView.delegate=self;



    [super viewDidLoad];
}




- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    NSLog(@"bannerViewDidLoadAd");

    if ( adView.hidden )
    {
        NSLog(@"going visible");
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        adView.hidden = NO;
        // banner is invisible now and moved out of the screen on 50 px
        //banner.frame = CGRectOffset(banner.frame, 0, 50);
        [UIView commitAnimations];
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    NSLog(@"didFailToReceiveAdWithError");
    if( !adView.hidden )  // ad banner displayed, but lost ad network
    {
        NSLog(@"going hidden");
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        adView.hidden = YES;
        // banner is visible and we move it out of the screen, due to connection issue
        //banner.frame = CGRectOffset(banner.frame, 0, -50);
        [UIView commitAnimations];
    }
}

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Единственное время

 - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

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

* Редактировать для наглядности

0 голосов
/ 20 июля 2012

Если вы проверяете документацию для разработчиков Apple, вы замечаете, что у вас есть 2 варианта:

  1. Чтобы помочь вам в проверке вашей реализации, iAd Network иногда возвращает ошибки, чтобы проверить ваш код обработки ошибок.
  2. Вы также можете проверить свою поддержку обработки ошибок вручную, отключив беспроводную функцию вашего устройства.

http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/iAd_Guide/TestingiAdApplications/TestingiAdApplications.html#//apple_ref/doc/uid/TP40009881-CH6-SW1

Учтите, что вы не можете отключить беспроводную связь длясимулятор iOS.Вам необходимо отключить сетевое соединение вашей системы разработки:

Тестирование подключения к IPhone: как заставить его потерять соединение?

...