ADInterstitialAd 不适用于 ipad swift

ADInterstitialAd doesn't work on ipad swift

我实现了一个 ADInterstitialAd,它在 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 上它只显示关闭按钮而不显示 adview 并且它不打印错误描述。我导入了 iAd 框架并在我的 class.

中包含了 ADInterstitialAdDelegate

presentInView 方法将 return 一个布尔值,告诉您它是否显示正常。所以我会先检查一下。

如果 returns NO 那么请检查您展示广告的视图是否确实是您期望的尺寸。如果视图不够大,则不会展示广告。您可能在视图生命周期中过早地展示了广告,并且视图的大小尚未调整为适合屏幕?

一些其他注意事项:

您不需要 UIViewController.prepareInterstitialAds() 调用,因为该方法不适用于直接使用 ADInterstitialAd 的人。您只是准备了广告,但创建了 ADInterstitialAd.

的实例

ADInterstitialAd 对象是一次性对象,因此请确保每次都获得一个新对象。

此外,UIViewController.prepareInterstitialAds() 是更简单的 api 的一部分,您不必自己管理 ADInterstitialAd。如果您没有任何特殊要求,您可能更愿意使用 api.