1

我有 iAds 和 Facebook 的 Audience Network 作为我的两个横幅广告。当加载我的 Audience Network 的横幅广告出现错误时,我希望我的 iAd 横幅出现。当我尝试在此函数中调用它时,我的 iAd 横幅不会出现。我正在我的设备上对此进行测试,并将开发人员设置填充率设置为 0%。执行此操作时,我的 Audience Network 的横幅广告仍会显示。我究竟做错了什么?

class GameViewController: UIViewController, ADBannerViewDelegate,
        ADInterstitialAdDelegate, SKProductsRequestDelegate,
    SKPaymentTransactionObserver, ChartboostDelegate, FBAdViewDelegate {

    var productID: NSString!
    let defaults = NSUserDefaults.standardUserDefaults()

    override func viewDidLoad() {
        super.viewDidLoad()
        if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
            // Configure the view.
            let skView = self.view as! SKView
            skView.showsFPS = false
            skView.showsNodeCount = false
            skView.multipleTouchEnabled = true

            /* Sprite Kit applies additional optimizations to improve rendering performance */
            skView.ignoresSiblingOrder = true

            /* Set the scale mode to scale to fit the window */
            scene.scaleMode = SKSceneScaleMode.AspectFill
            //scene.size = skView.bounds.size
            skView.presentScene(scene)
            loadFbAds()
        }

        func loadFbAds() {
            if defaults.boolForKey("removeAdsPurchased") == false {
                let width = self.view.frame.size.width
                let height = self.view.frame.size.height / 10

                let adView: FBAdView = FBAdView(placementID:"placement_id", adSize:kFBAdSize320x50, rootViewController:self)
                adView.frame = CGRect(x: 0, y: self.view.frame.size.height - 50, width: width, height: height)
                self.view.addSubview(adView)

                adView.delegate = self
                FBAdSettings.addTestDevice("testdevice")
                adView.loadAd()

                println("worksssssssssfsdfsdfsdfsdf")
            }
        }

        func adView(adView: FBAdView!, didFailWithError error: NSError!) {
            adBannerView = ADBannerView(frame: CGRect.zeroRect)
            adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height / 2)
            adBannerView.delegate = self
            adBannerView.hidden = false
            view.addSubview(adBannerView)

            adView.hidden = true
        }
}
4

1 回答 1

1

您的开发者设置中的填充率仅指您的iAd 填充率。将此设置为 100%。您应该在全局范围内创建 iAdADBannerView和 FB FBAdView,并在视图加载到viewDidLoad. 然后,当您的 FBFBAdView无法加载时,您可以将您ADBannerView的 hidden 属性设置为false. 您现在的设置方式将在ADBannerView每次您的 FBFBAdView无法加载广告时创建一个新的 iAd。您的代码最终应该看起来与此非常相似:

    // Create our FB and iAd banners globally
    var fbBannerAd: FBAdView = FBAdView()
    var iAdBannerAd: ADBannerView = ADBannerView()

override func viewDidLoad() {
    super.viewDidLoad()

    // View loaded so lets setup our ads
    setupAds()
}

func setupAds() {
    // FB
    // Create FB banner ad with our placementID and select an adSize
    fbBannerAd = FBAdView(placementID:"placementID", adSize:kFBAdSizeHeight50Banner, rootViewController:self)
    // Set its frame relative to the screen
    fbBannerAd.frame = CGRect(x: 0, y: self.view.frame.size.height - fbBannerAd.frame.height, width: self.view.frame.size.width, height: fbBannerAd.frame.height)
    // Request ad from FB
    fbBannerAd.loadAd()
    // Set our ads delegate to 'self'
    fbBannerAd.delegate = self
    // Add our FB ad to our view
    self.view.addSubview(fbBannerAd)

    // iAd
    // Set its frame relative to the screen
    iAdBannerAd.frame = CGRect(x: 0, y: self.view.frame.size.height - iAdBannerAd.frame.height, width: self.view.frame.size.width, height: iAdBannerAd.frame.height)
    // Set our ads delegate to 'self'
    iAdBannerAd.delegate = self
    // Add our iAd ad to our view
    self.view.addSubview(iAdBannerAd)
    // Lets hide our iAd ad initially
    iAdBannerAd.hidden = true

    println("created our banner ads")
}

func adView(adView: FBAdView!, didFailWithError error: NSError!) {
    // FB ad failed to load
    // Lets print the error so we know why
    println("failed to load fb ad with error: \(error)")

    // Also lets hide our FB ad because it doesn't have an ad to show
    fbBannerAd.hidden = true

    // And now we show our iAd ad
    iAdBannerAd.hidden = false
}

func adViewDidLoad(adView: FBAdView!) {
    // FB ad loaded an ad
    // Lets make sure it is shown and our iAd ad is hidden
    fbBannerAd.hidden = false
    iAdBannerAd.hidden = true
}

然后,要查看当您的 FBFBAdView失败时会发生什么,您可以调用:

adView(fbBannerAd, didFailWithError: nil)
于 2015-05-21T00:11:18.960 回答