iAd代码粗略

时间:2010-12-30 03:59:19

标签: iphone objective-c iad

我已经说明了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 个答案:

答案 0 :(得分:1)

不,这里没问题。 Apple经常提供新的模拟广告,有时您会遇到错误,以测试您的错误处理功能。该错误可能意味着“无库存可用”,这会使您的广告消失。来自relevant developer documentation

  

如果发生错误,则显示横幅视图   打电话给代表   bannerView:didFailToReceiveAdWithError:   方法。当这发生时,你的   应用程序必须隐藏横幅视图。   清单2-3显示了一种可能的方法   实现这一点。它使用相同的   属性如清单2-2所示   横幅是否可见如果   横幅是可见的并且是错误的   发生时,它将横幅移开   屏幕。

     

即使错误发送到您的   代表,横幅视图继续   尝试下载新广告。   这两个代表的组合   方法允许您显示   横幅广告只有在广告时才有   加载。

良好的错误处理实现很好!

答案 1 :(得分:0)

它旨在确保您可以正确处理iAd错误。它将随机提供错误以及良好的测试数据。