ios - iAd 横幅在 segue 上变白

标签 ios iphone xcode swift iad

我正在使用 Xcode 7、Swift 2.0。这个问题既发生在模拟器中,也发生在我在 App Store 上可用的实际应用程序中。很多时候(不总是),当我在我的应用程序中执行 segue 时,adBanner 在加载新广告之前会变成纯白色。我很困惑,因为有广告可用,即使它是白色的!

这是我的代码:

我初始化 ADBannerView:

var adBanner = ADBannerView(adType: ADAdType.Banner)

在我看来DidLoad:

self.canDisplayBannerAds = true
self.adBanner.delegate = self
self.adBanner.hidden = true
self.adBanner.alpha = 0
self.adBanner.frame.origin.y = self.view.frame.height-self.adBanner.frame.height
self.view.addSubview(self.adBanner)

我的 viewDidDisappear:

override func viewDidDisappear(animated: Bool) {

        super.viewDidDisappear(true)

        adBanner.removeFromSuperview()

        if( deviceType.isEqualToString("iPhone") )
        {

            adBanner.delegate = nil

        }

    }

在我的课上:

    func bannerViewDidLoadAd(banner: ADBannerView!)
    {

        self.adBanner.hidden = false
        UIView.animateWithDuration(0.5, animations: {self.adBanner.alpha = 1})

    }

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!)
    {
        self.adBanner.hidden = true
        UIView.animateWithDuration(0.5, animations: {self.adBanner.alpha = 0})

    }

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool
    {

        return willLeave

    }

    func bannerViewWillLoadAd(banner: ADBannerView!) {

    }

当使用 Xcode 运行应用程序时,我偶尔会收到此消息,尽管我已经实现了委托(delegate)方法:

ADBannerView:未处理的错误(没有委托(delegate)或委托(delegate)未实现 didFailToReceiveAdWithError:):错误域=ADErrorDomain 代码=5“操作无法完成。横幅 View 可见但没有内容”UserInfo=0x9632d30 {ADInternalErrorCode =5, NSLocalizedFailureReason=横幅 View 可见但没有内容

编辑:问题是使用 canDisplayBannerAds 导致未调用委托(delegate)方法。更多信息在这里:Hiding iAd ADBannerView in Swift when ad fails to load - no delegate or delegate does not implement didFailToReceiveAdWithError

最佳答案

这里有一些适合你的工作代码,对我有用。这不需要 self.candisplaybannerads = true 因为我有一些问题。广告会根据屏幕尺寸自动改变尺寸,位于屏幕底部。在我的 spritekit 游戏中,过渡时变白没有任何问题。

import iAd

class viewController: UIViewController, ADBannerViewDelegate {

var AdBanner = ADBannerView()

override func viewDidLoad() {
    super.viewDidLoad()

        /* Ad Banner Settings */

        AdBanner = ADBannerView()
        AdBanner.frame = CGRectZero
        AdBanner.delegate = self
        self.AdBanner.frame = CGRectMake(0, self.view.frame.size.height-self.AdBanner.frame.size.height, self.AdBanner.frame.size.width, self.AdBanner.frame.size.height)
        AdBanner.backgroundColor = UIColor.clearColor()
        self.view.addSubview(AdBanner)

}

/* All iAd Functions */

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
/* whatever you need */
    return true
}

func bannerViewActionDidFinish(banner: ADBannerView!) {
/* whatever you need */
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    AdBanner.hidden = false
}


func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    NSLog("Error Loading Ad")
/* whatever you need */
    AdBanner.hidden = true
}
func bannerViewWillLoadAd(banner: ADBannerView!) {
/* whatever you need */
}

关于ios - iAd 横幅在 segue 上变白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180847/

相关文章:

iphone - Obj-C,Storekit restoreCompletedTransactions 返回零交易?

ios - Swift:如何防止未显示的 UITableViewCells 在滚动时被关闭

ios - 如何访问变量名称并将字符串更改为它

objective-c - 此类不符合关键特征的键值编码

iphone - 如何将用户发送到 App Store 以安装应用程序,或将用户发送到带有网站变量的应用程序?

iOS 应用程序停止工作,配置文件被删除

iphone - 如何遍历目录中的所有图像文件?

ios - iOS 8.3 iPad 上的自定义 UIWindow 可在模拟器上运行,但不能在设备上运行

ios - 如何在 Swift 中初始化对象时将自身传递给初始化程序?

ios - Xcode 8 中的代码签名错误