1

2 つのバナー広告として、iAds と Facebook の Audience Network があります。Audience Network のバナー広告の読み込み中にエラーが発生した場合、iAd バナーを表示したいと考えています。この関数で呼び出そうとすると、iAd バナーが表示されません。私は自分のデバイスでこれをテストしており、開発者設定のフィル レートを 0% に設定しています。これを行うと、オーディエンス ネットワークのバナー広告がまだ表示されます。私は何を間違っていますか?

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。次に、FBの読み込みに失敗したときに、隠しプロパティを にFBAdView設定するだけです。FBが広告の読み込みに失敗するたびに、新しい iAd を作成するように設定します。コードは次のようになります。ADBannerViewfalseADBannerViewFBAdView

    // 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
}

次に、FB が失敗したときに何が起こるかを確認するには、次のようにFBAdView呼び出します。

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