我实现了一个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/

10-13 03:51