iAd未显示在应用的第一个屏幕上 - 广告未加载

时间:2013-12-03 08:56:32

标签: ios iphone objective-c iad lifecycle

我正在关注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尝试获取广告?

1 个答案:

答案 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
}

首次加载应用时,需要时间加载广告。互联网带宽等等。因此,当首次加载根视图控制器时,应用程序还没有时间加载任何广告。所以现在应用程序有时间加载广告,完成后,它会显示它。