【问题标题】:Detect if interstitial ad is showing检测插页式广告是否正在展示
【发布时间】:2014-02-04 23:36:52
【问题描述】:

我目前正在我的第一个 iPhone 应用中实施 iAd。我遇到的问题是检测我的视图控制器上是否确实显示了插页式广告。因为,如果没有广告,我想展示另一个视图。

我一直在阅读 iAd 编程指南,然后在文档中找到了“UIViewController iAd Additions Reference”。这告诉我,我的视图控制器现在有一个新属性,称为 presentingFullScreenAd。

问题是每当我在 viewDidLoad、viewWillAppear 或 viewDidAppear 中调用它时,它都会返回 NO。除非我关闭广告(如果有广告显示),否则它会在 viewWillAppear 和 viewDidAppear 中返回 YES,但为时已晚。

我已将显示广告的视图控制器的 interstitialPresentationPolicy 设置为 ADInterstitialPresentationPolicyAutomatic,因为我希望它尽可能频繁地显示广告。

对此有什么想法吗? 提前致谢。

【问题讨论】:

  • 是否有错误的委托方法。如果广告没有显示,它将进入他们的......我记得做过类似的检查,但它不是用于插页式广告
  • 也试试这个...看起来有一个 .loaded 属性:developer.apple.com/library/ios/documentation/iAd/Reference/…
  • 是的,我也看到了这一点,但我的理解是 ADInterstitialAd calss 仅用于 iPad。在 iPhone 平台上,广告将由视图控制器 iAd Additions 处理。否则我怎么能访问插页式调用.loaded?第一次启动时,我刚刚在我的视图控制器上调用了 prepareInterstitialAds。

标签: ios iphone objective-c iad interstitial


【解决方案1】:

您可能需要设置一个计时器,以在一定时间后取消对插页式广告的请求,以便在广告未及时填充时显示下一个视图。 在显示插页式广告之前调用interstitialAdDidLoad。因此,如果广告已加载,则广告现在会一直显示在屏幕上,直到它被关闭,此时将调用 interstitialAdDidUnloadinterstitialAdActionDidFinish。监听这些委托方法以确定当前屏幕上是否有插页式广告。

-(void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd {
    NSLog(@"interstitialAdDidLOAD");

    [interstitial presentFromViewController:self];
    NSLog(@"interstitialAdDidPRESENT");
}

-(void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd {
    NSLog(@"interstitialAdDidUNLOAD");
}

-(void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd {
    NSLog(@"interstitialAdDidFINISH");
}

另外,请参考UIViewController iAd Additions Reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多