我正在关注Apple's best practices for iAd为我的应用代表中的整个应用创建单个iAd横幅广告对象 - 正如它所说,您应该创建一个ADBannerView
并在所有视图中共享它。我调用以下方法在我的app delegate中初始化它:
- (void)initializeAds {
// bannerAd is a property of MyAppDelegate
bannerAd = [[ADBannerView alloc] initWithFrame:CGRectZero];
bannerAd.delegate = self;
bannerAd.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
}
然后在我的UIViewController中,我引用
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
ADBannerView *myBannerView = appDelegate.bannerAd;
这在我的大部分应用中运行良好,在viewDidAppear:
中运行当前UIViewController的广告显示代码。但是,在第一个UIViewController(根UIViewController)上,当应用程序最初打开时,它不会显示广告。它似乎还没有加载广告。但是,当我向下导航到另一个UIViewController,然后返回时,广告就会显示出来,大概是因为它有机会加载广告。我正在以100%的填充率运行我的测试设备。如何在我的代码运行之前强制iAd尝试获取广告?
答案 0 :(得分:0)
在app delegate中,确保将app delegate设置为横幅广告的委托。然后,实现方法-(void)bannerViewDidLoadAd:(ADBannerView *)banner
:
-(void)bannerViewDidLoadAd:(ADBannerView *)banner {
UIViewController *rootViewController = <get the root view controller>;
[rootViewController displayAds]; // this is the code to display the ad
}
首次加载应用时,需要时间加载广告。互联网带宽等等。因此,当首次加载根视图控制器时,应用程序还没有时间加载任何广告。所以现在应用程序有时间加载广告,完成后,它会显示它。