我试图在我的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];
}
当我在模拟器上测试时,测试广告立即显示。当我在我的设备上测试时,什么也没有显示。
我最近注册了苹果的iAd系统,但是当我尝试查看iTunes Connect的iAd部分时,它告诉我iAd网络目前不可用。这就是测试广告无法在我的设备上显示的原因吗?如果是这样,为什么它仍然显示在模拟器上?
这是因为在广告可以显示之前,你的设备必须联系iAD
服务器,搜索成千上万的广告,决定哪一个最适合你的应用,将广告信息发送到你的ios设备,然后发送确认回iAD
服务器,没有良好的互联网连接,这些都无法完成。
然而,在ios simulator
上,上述都不必发生,模拟器只是显示测试广告,无论如何。
我有两个应用程序在应用程序商店,使用完全相同的代码和你做的显示广告,与你所描述的延迟。所以,你的代码没有错误,广告显示的延迟是完全正常的。
所以,正如你所看到的,在一个iAD可以显示在一个实际的ios设备上之前,有很多事情要发生,即使这样,你必须有一个强大的互联网连接
我希望这对新用户有帮助,这对我有用:
在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];
}