即使我添加了委托,iAd 也无法正常工作

iAd not working even though I have added the delegate

我正在添加一个 iAd 横幅,当我关闭 Wi-Fi 时它显示为白色 space。 我在 Whosebug 上发现了类似的问题,其中包含添加委托的说明 - 我已经这样做了。 这是我的代码:

 func createIAd() {

    bannerView = ADBannerView(adType: .Banner)
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    bannerView.delegate = self
    bannerView.hidden = true
    view.addSubview(bannerView)

    let viewsDictionary = ["bannerView": bannerView]
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[bannerView]|", options: [], metrics: nil, views: viewsDictionary))
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[bannerView]|", options: [], metrics: nil, views: viewsDictionary))


}

func bannerViewDidLoadAd(banner: ADBannerView!) {

}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    dontShowAd = true
    print("NOAD!!!!")
    hideIAd()
}



func hideIAd() {
    bannerView.hidden = true

}

func showIAd() {
    if dontShowAd == false {
    bannerView.hidden = false
    }
}

看看您的代码,它说如果 ADBannerView 收到错误则不显示广告。

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
        dontShowAd = true
        print("NOAD!!!!")
        hideIAd()
    }

关闭你的 wifi 被认为是一个错误,因为你不能在没有 wifi 的情况下观看或下载广告,想想你真的希望你的用户在没有互联网连接时在他们的应用程序上展示广告这不会给你带来任何利润,因为广告需要 wifi 才能工作。这就是它向您显示空白方块的原因。但我不会质疑您要完成的任务,因此如果您想要在用户没有 wifi 的情况下显示广告,只需将您的布尔值更改为 false。

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
        dontShowAd = false
        print("NOAD!!!!")
        hideIAd()
    }

但是如果你想在没有互联网的时候隐藏横幅,你所要做的就是添加这两个功能。假设 Banner 和 ViewController 之间的连接称为 Banner。你可以去掉剩下的代码,你只需要

func bannerViewDidLoadAd(banner: ADBannerView!) {

self.Banner?hidden = false 
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    self.Banner?hidden true
}
}