我正试图在我的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网络目前无法使用。这就是为什么测试广告不会出现在我的设备上?如果是这样,为什么它仍然出现在模拟器上?
答案 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];
}