AdMob 横幅广告未显示 Swift 3

Posted

技术标签:

【中文标题】AdMob 横幅广告未显示 Swift 3【英文标题】:AdMob Banner Ad not Showing Swift 3 【发布时间】:2016-12-05 19:57:04 【问题描述】:

我正在开发一款 SpriteKit 游戏,并正在通过 AdMob (Google Firebase) 实现横幅广告。我已按照 Google 的教程 here 和 here 设置您的第一个广告请求,但是当我在 sim 卡或我的设备 (iPhone 6s) 上运行该应用程序时,横幅不会出现。根据教程,我通过 Storyboard 实现了横幅视图,其余部分以编程方式设置。下面是我的视图控制器的代码。

问:为什么我的横幅没有显示?

跟进问:是否可以只在某些SKScenes上显示banner?

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
    

【问题讨论】:

您无需在每次运行 showAd() 时都请求新横幅。简单地取消隐藏它。此外,在您的 viewDidLoad 代码中,您正在初始化一个横幅广告,然后加载另一个 @Nik 关于调用 show/hideBanner(),如果其他场景文件位于此处的 vc 文件中,我如何从其他场景文件中访问这些功能(以及 bannerView 本身)?啊,我会那样做的!有趣的是,我记得在设置 req 变量的属性时,我看着那行并告诉自己改变它。干杯! 看看这个从场景中调用vc函数:***.com/a/40409261/6728196 谢谢!如果您想添加您的评论作为答案,我很乐意标记它。 【参考方案1】:

首先,您无需在每次运行showAd() 时都请求新横幅。简单地取消隐藏它。您在启动时加载的广告将在整个生命周期内保留,并自动刷新。

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

关于从 SKScene 调用 GameViewController 中的函数,请看:Call GameViewController function from SKScene

【讨论】:

以上是关于AdMob 横幅广告未显示 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

iAd 和 AdMob 广告未在已发布的 iPhone 应用程序中显示

横幅未显示我的身份来自adMob Ionic 3

Admob 广告未显示在 phonegap 构建应用程序上

Admob 广告未显示在 phonegap 构建应用程序上

unity 横幅广告 admob v5.3.0 不显示

我可以在同一活动中显示 admob 原生广告和 admob 横幅广告吗?