我正在开发一款 SpriteKit 游戏,并正在通过 AdMob (Google Firebase) 实现横幅广告。我已经按照 Google 的教程 here和 here在设置您的第一个广告请求时,但是当我在 sim 卡或我的设备 (iPhone 6s) 上运行该应用程序时,横幅不显示。根据教程,我通过 Storyboard 实现了横幅 View ,其余部分以编程方式设置。下面是我的 View Controller 的代码。
问:为什么我的横幅没有显示?
跟进问:是否可以只在某些SKScene上显示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
}
}
Best Answer-推荐答案 strong>
首先,您不需要在每次运行 showAd() 时都请求新的横幅。简单地取消隐藏它。您在启动时加载的广告将在整个生命周期内保留,并自动刷新。
其次,在您的 viewDidLoad 代码中,您正在初始化一个横幅广告,然后加载一个全新的广告。确保您加载的请求与您设置的请求相同。
至于从 SKScene 调用 GameViewController 内的函数,请看:Call GameViewController function from SKScene
关于ios - AdMob 横幅广告未显示 Swift 3,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/40982302/
|