iAd код отрывочный - PullRequest
       1

iAd код отрывочный

1 голос
/ 30 декабря 2010

Я внедрил код iAd, однако и на симуляторе, и на моем устройстве ему нравится, что iAd исчезает через некоторое время, даже когда интернет-соединение в порядке. Есть ли что-то, что я сделал неправильно с моей реализацией, или это просто ожидалось? Ниже приведен и код, и консоль, показывающая, как часто они оба вызываются. Спасибо!

- (void)viewDidLoad {
    adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    adView.frame = CGRectOffset(adView.frame, 0, 435);   //orginally -50
 adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
 adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    [self.view addSubview:adView];
    adView.delegate = self;
    self.bannerIsVisible = NO;

    [super viewDidLoad];
}

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

 if (!self.bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        // banner is invisible now and moved out of the screen on 50 px
        banner.frame = CGRectOffset(banner.frame, 0, -25);  //orginally 50
        [UIView commitAnimations];
        self.bannerIsVisible = YES;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    NSLog(@"bannerViewRecievedError");
 if (self.bannerIsVisible)
    {
        [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, 25);  //orginally -50
        [UIView commitAnimations];
        self.bannerIsVisible = NO;
    }
}

- (void)dealloc {
    NSLog(@"dealloc");
    adView.delegate=nil;
    [adView release];
    [super dealloc];
}

Вот что говорит консоль:

2010-12-29 20:04:17.717 app[48943:207] bannerViewRecievedError
2010-12-29 20:04:52.410 app[48943:207] bannerViewRecievedError
2010-12-29 20:05:17.168 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:05:47.166 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:06:16.993 app[48943:207] bannerViewRecievedError
2010-12-29 20:06:46.803 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:07:17.314 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:07:47.140 app[48943:207] bannerViewRecievedError
2010-12-29 20:08:19.899 app[48943:207] bannerViewRecievedError
2010-12-29 20:08:46.978 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:09:17.106 app[48943:207] bannerViewRecievedError
2010-12-29 20:09:46.930 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:10:17.114 app[48943:207] bannerViewDidLoadAd
2010-12-29 20:10:47.609 app[48943:207] bannerViewDidLoadAd

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Нет, здесь нет проблем. Apple регулярно показывает новые смоделированные объявления, и иногда вы сталкиваетесь с ошибкой, чтобы проверить свои возможности по обработке ошибок. Ошибка, вероятно, означает «Нет доступных ресурсов», что может привести к исчезновению вашего объявления. Из соответствующей документации разработчика :

Если возникает ошибка, вид баннера вызывает делегата bannerView: didFailToReceiveAdWithError: метод. Когда это произойдет, ваш Приложение должно скрывать вид баннера. Перечисление 2-3 показывает один способ, которым Вы могли бы реализовать это. Он использует то же самое свойство как Перечисление 2-2, чтобы отследить о том, виден ли баннер. Если баннер виден и ошибка происходит, он перемещает баннер с экран.

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

Отличная работа по хорошей реализации обработки ошибок!

0 голосов
/ 30 декабря 2010

Это сделано для того, чтобы вы могли правильно обрабатывать ошибки iAd.Он случайным образом выдаст вам ошибки, а также хорошие тестовые данные.

...