iAd横幅在模拟器上显示测试广告,但在设备上没有

我想在我的iPhone应用程序上放置一个iAd横幅。 这是我宣布横幅广告的地方:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1]; [banner setAlpha:1]; [UIView commitAnimations]; } - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1]; [banner setAlpha:0]; [UIView commitAnimations]; } 

当我在模拟器上进行测试时,测试广告会立即显示出来。 当我在我的设备上测试时,没有任何显示。

我最近注册了Apple的iAd系统,但是当我尝试查看iTunes Connect的iAd部分时,它告诉我iAd网络目前不可用。 这就是为什么测试广告不会出现在我的设备上? 如果是这样,为什么它仍然出现在模拟器上?

这是因为在展示广告之前,您的设备必须与iAD服务器联系,搜索投放数十个(如果不是数百个)数千个广告,确定哪个广告最适合您的应用,将广告信息发送到您的ios设备,然后将确认发送回iAD服务器,如果没有良好的互联网连接,这一切都无法完成。

然而,在ios simulator ,上述情况都不会发生,模拟器无论如何都会简单地显示测试广告。

我在应用程序商店中有两个应用程序使用与您完全相同的代码,并按照您描述的延迟显示广告。 因此,您的代码没有错误,广告的显示延迟完全正常。

因此,正如您所看到的, 在iAD可以显示在实际的ios设备上之前必须要做很多事情,即使这样,您也必须拥有强大的互联网连接

我希望这可以对新用户有所帮助,这对我有用:

在ViewController.h中

  @interface ViewController : UIViewController  { } @property (nonatomic, strong) ADBannerView *banner; @end 

并在ViewController中

 - (void)viewDidLoad{ [super viewDidLoad]; //self.canDisplayBannerAds = YES; This give me a error self.banner = [[ADBannerView alloc] initWithFrame:CGRectZero]; self.banner.delegate = self; [self.banner sizeToFit]; self.banner.hidden = true; } 

最后一件事:

实现两种方法:

 - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ if (banner.isBannerLoaded) { [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; // Assumes the banner view is placed at the bottom of the screen. banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height); [UIView commitAnimations]; } } - (void)bannerViewDidLoadAd:(ADBannerView *)banner{ NSLog(@"Showing iAd"); self.banner.hidden = false; ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 50, 320, 50)]; //adView.delegate = self; [self.view addSubview:adView]; }