似乎有两种方法可以在iPhone上使用iAd显示插页式广告。关于插页式广告的文档已过时,但根据iAds Additions Reference,设置的所有操作都需要:
[UIViewController prepareInterstitialAds];
[self setInterstitialPresentationPolicy:ADInterstitialPresentationPolicyManual];
接下来是:
[self requestInterstitialAdPresentation]
每当您想要展示广告时,(如果成功则返回bool)。
其他选项是手动创建插页式广告对象:
ADInterstitialAd *interstitial;
然后:
interstitial = [[ADInterstitialAd alloc] init];
interstitial.delegate = self;
当你想要展示广告时:
if (interstitial.isLoaded) {
[interstitial presentFromViewController:self];
}
然而,不推荐使用PresentViewController:并使用presentInView:self.view表示广告没有关闭按钮。编译器还建议requestInterstitalAdPresentation。
因此人们会认为选项1是首选方法。我对this question的答案感到有点困惑,因为它使用了2的组合,但似乎requestInterstitalAdPresentation没有触发ADInterstitialAd实例的委托方法,并且使用它们都是没有意义的。
所以我的问题是 - 第一种方法真的足够吗?我发现它只显示一个广告,然后再显示无法显示。我在另一个问题中读到ADInterstitialAd实例需要分配给nil才能请求新广告,但是requestInterstitialAdPresentation无论如何都会忽略此实例。 requestInterstitialAdPresentation是否只是模拟低填充率?或者我错过了一步?
答案 0 :(得分:2)
它只显示1个广告,因为苹果实施了延迟。您必须等待2或3分钟,然后才能为您提供下一个广告。
对于实现,当用户从广告返回时,新方法会在视图控制器中调用viewDidAppear。
你可以在这里看到我的实施...... https://stackoverflow.com/a/27536872/3489816
所以回答你的问题 - 是的,第一种方法就足够了。它会显示更多广告,但您必须等待一段时间。您不应再使用AdInterstitialAd,因此不必担心将其设置为nil。它不是模拟低填充率。我不认为你错过任何东西......我们从来没有告诉我们必须等待:)
旁注...我相信设置interstitialPresentationPolicy也会为您请求您的第一个广告(就像prepareInterstitialAds那样)。
答案 1 :(得分:0)
您描述的第一种方法正是我刚刚开始工作的方式,它确实会生成新的广告,而不仅仅是一种广告。你必须致电
[self requestInterstitialAdPresentation]
每次您想要展示广告。广告并未始终显示,您的iPhone开发人员设置可能会使这种情况变得更糟。
我已经有一些代码执行此操作并等待完成here。