2016-12-05 17 views
2

私はSpriteKitゲームに取り組んでおり、AdMob(Google Firebase)経由でバナー広告を実装しています。最初の広告リクエストを設定する際にGoogleのチュートリアルherehereに従っていますが、simまたはmyデバイス(iPhone 6s)でアプリを実行するとバナーが表示されません。チュートリアルごとに、私はストーリーボードを介してバナービューを実装し、残りはプログラムで設定しました。以下は私のView Controllerのコードです。AdMobバナー広告が表示されないSwift 3

Q:なぜ私のバナーが表示されないのですか?

フォローアップQ:特定のSKScenesにのみバナーを表示することはできますか?

import UIKit 
import SpriteKit 
import GoogleMobileAds 

class GameViewController: UIViewController, GADBannerViewDelegate { 

    @IBOutlet weak var bannerView: GADBannerView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     print("Google Mobile Ads SDK version: " + GADRequest.sdkVersion()) 
     bannerView.delegate = self 
     bannerView.adUnitID = "ca-app-pub-9474695450721030/1823667708" 
     bannerView.rootViewController = self 
     let req = GADRequest() 
     req.testDevices = ["91fbd46dff1179ce0a5e7226cea1ee0b", kGADSimulatorID] 
     req.tag(forChildDirectedTreatment: true) 
     bannerView.load(GADRequest()) 
     view.addSubview(bannerView) 
     showBanner() 
    } 

    override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 

     if let skView = self.view as? SKView { 
      if skView.scene == nil { 

       let aspectRatio = view.bounds.size.height/view.bounds.size.width 
       let scene = MenuScene(size: CGSize(width: 750, height: 750 * aspectRatio)) 

       scene.scaleMode = .aspectFill 
       skView.ignoresSiblingOrder = true 

       if kDebug { 
        skView.showsFPS = true 
        skView.showsDrawCount = true 
        skView.showsNodeCount = true 
        skView.showsPhysics = true 
       } 

       let transition = SKTransition.fade(with: SKColor.black, duration: 0.5) 

       skView.presentScene(scene, transition: transition) 
      } 
     } 
    } 

    func showBanner() { 
     bannerView.isHidden = false 
     let request = GADRequest() 
     request.testDevices = ["2077ef9a63d2b398840261c8221a0c9b"] 
     bannerView.load(request) 
    } 

    func hideBanner() { 
     bannerView.isHidden = true 
    } 
} 
+0

あなたは新しいバナーあなたがshowAdを実行するたびに()を要求する必要はありません。単にそれを隠すだけです。また、あなたのviewDidLoadコードでは、バナー広告を初期化してから別のファイルをロードしています – Nik

+0

@Nik show/hideBanner()の呼び出しに関して、他のシーンファイルからこれらの関数(およびバナービュー自体)にアクセスする方法ここではvcファイルのローカルですか? Gahh、私はそれをするだろう!面白い、私はその行を見て、私がreq変数の属性を設定していたときにそれを変更するよう指示したことを覚えています。乾杯! – Mike

+0

これを見て、シーンからVC関数を呼び出す:http://stackoverflow.com/a/40409261/6728196 – Nik

答えて

3

まず、showAd()を実行するたびに新しいバナーをリクエストする必要はありません。単にそれを隠すだけです。起動時にロードする広告は、ライフサイクル全体にわたって維持され、自動的に更新されます。

第2に、viewDidLoadコードでは、バナー広告を初期化してから、まったく新しいものを読み込みます。あなたが設定したのと同じ要求をロードしていることを確認してください。

はSKSceneからあなたのGameViewController内の関数を呼び出すためのように、このを見てみましょう:Call GameViewController function from SKScene

関連する問題