菜鸟教程小白 发表于 2022-12-12 12:31:38

ios - AdMob 横幅广告未显示 Swift 3


                                            <p><p>我正在开发一款 SpriteKit 游戏,并正在通过 AdMob (Google Firebase) 实现横幅广告。我已经按照 Google 的教程 <a href="https://firebase.google.com/docs/admob/ios/quick-start#your_first_banner_request" rel="noreferrer noopener nofollow">here</a>和 <a href="https://firebase.google.com/docs/admob/ios/games" rel="noreferrer noopener nofollow">here</a>在设置您的第一个广告请求时,但是当我在 sim 卡或我的设备 (iPhone 6s) 上运行该应用程序时,横幅不显示。根据教程,我通过 Storyboard 实现了横幅 View ,其余部分以编程方式设置。下面是我的 ViewController 的代码。</p>

<p>问:为什么我的横幅没有显示?</p>

<p>跟进问:是否可以只在某些SKScene上显示banner?</p>

<pre><code>import UIKit
import SpriteKit
import GoogleMobileAds

class GameViewController: UIViewController, GADBannerViewDelegate {

    @IBOutlet weak var bannerView: GADBannerView!

    override func viewDidLoad() {
      super.viewDidLoad()

      print(&#34;Google Mobile Ads SDK version: &#34; + GADRequest.sdkVersion())
      bannerView.delegate = self
      bannerView.adUnitID = &#34;ca-app-pub-9474695450721030/1823667708&#34;
      bannerView.rootViewController = self
      let req = GADRequest()
      req.testDevices = [&#34;91fbd46dff1179ce0a5e7226cea1ee0b&#34;, 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 = [&#34;2077ef9a63d2b398840261c8221a0c9b&#34;]
      bannerView.load(request)
    }

    func hideBanner() {
      bannerView.isHidden = true
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>首先,您不需要在每次运行 <code>showAd()</code> 时都请求新的横幅。简单地取消隐藏它。您在启动时加载的广告将在整个生命周期内保留,并自动刷新。 </p>

<p>其次,在您的 <code>viewDidLoad</code> 代码中,您正在初始化一个横幅广告,然后加载一个全新的广告。确保您加载的请求与您设置的请求相同。 </p>

<p>至于从 SKScene 调用 GameViewController 内的函数,请看:<a href="https://stackoverflow.com/a/40409261/6728196" rel="noreferrer noopener nofollow">Call GameViewController function from SKScene</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AdMob 横幅广告未显示 Swift 3,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40982302/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40982302/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AdMob 横幅广告未显示 Swift 3