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

时间:2014-03-22 14:50:49

标签: ios iphone objective-c 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网络目前无法使用。这就是为什么测试广告不会出现在我的设备上?如果是这样,为什么它仍然出现在模拟器上?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

在ViewController.h中

  @interface ViewController : UIViewController <ADBannerViewDelegate> {    
  }
  @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];
}