我实现了一个adintrestitialad,它在iphone上运行良好,但在ipad上不起作用。这是我的代码:
func close(sender: UIButton) {
closeButton.removeFromSuperview()
interAdView.removeFromSuperview()
}
func loadAd() {
println("load ad")
interAd = ADInterstitialAd()
interAd.delegate = self
}
func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
println("ad did load")
interAdView = UIView()
interAdView.frame = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height)
self.view?.addSubview(interAdView)
interAd.presentInView(interAdView)
UIViewController.prepareInterstitialAds()
interAdView.addSubview(closeButton)
}
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
closeButton.removeFromSuperview()
interAdView.removeFromSuperview()
}
func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
println("failed to receive")
println(error.localizedDescription)
closeButton.removeFromSuperview()
interAdView.removeFromSuperview()
}
它打印的是“ad did load”,但在ipad上,它只显示closebutton,而不显示adview,而且不会打印错误描述。我导入了iAd框架,并将adintrestitialaddelegate包含在我的类中。
最佳答案
presentInView
方法将返回一个布尔值,告诉您它是否显示为ok。所以我要先检查一下。
如果返回NO
,请检查您呈现广告的视图是否实际为预期的大小。如果视野不够大,广告就不会出现。你可能在视图生命周期的早期展示广告,而视图的大小还没有调整到适合屏幕的大小?
其他注意事项:
您不需要UIViewController.prepareInterstitialAds()
调用,因为该方法不适用于直接使用ADInterstitialAd
的用户。你只需准备广告,却创建了一个ADInterstitialAd
的实例。ADInterstitialAd
对象是一次性对象,因此请确保每次都有一个新对象。
而且UIViewController.prepareInterstitialAds()
是一个更简单的api的一部分,您不必亲自管理ADInterstitialAd
。如果您没有任何特殊要求,您可能更喜欢使用该api。
关于ios - ADInterstitialAd在iPad Swift上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29586851/