Chi*_*ief 0 xcode banner admob ios swift
在我的游戏中,我有 4 个不同的场景。现在我想在这 4 个场景中的 2 个中投放一些 AdMob 横幅广告。
我是这样试的。
class GameViewController: UIViewController, GADBannerViewDelegate {
var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if var scene = StartScene(fileNamed: "StartScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
if var scene = MainMenuScene(fileNamed: "MainMenuScene") {
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
self.view.addSubview(bannerView)
let request = GADRequest()
request.testDevices = [kGADSimulatorID]
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.adUnitID = "ca-app-pub-2567181742111069/9977523039"
bannerView.load(request)
bannerView.center = CGPoint(x: 329, y: 350)
}
view.ignoresSiblingOrder = true
view.showsPhysics = false
view.showsFPS = false
view.showsNodeCount = false
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,广告仍然显示在每个场景中。
有谁知道如何解决这个问题?
广告会在每个场景中显示,因为横幅视图附加到包含子场景的 GameViewController(充当超级视图)。
创建并加载横幅广告viewDidLoad()并将其隐藏在您不希望它出现的场景中,然后在您想要的场景中显示它:
class GameViewController: UIViewController, GADBannerViewDelegate {
var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
self.view.addSubview(bannerView)
let request = GADRequest()
request.testDevices = [kGADSimulatorID]
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.adUnitID = "ca-app-pub-2567181742111069/9977523039"
bannerView.load(request)
bannerView.center = CGPoint(x: 329, y: 350)
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if var scene = StartScene(fileNamed: "StartScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
self.bannerView.isHidden = true
view.presentScene(scene)
}
if var scene = MainMenuScene(fileNamed: "MainMenuScene") {
self.bannerView.isHidden = false
}
view.ignoresSiblingOrder = true
view.showsPhysics = false
view.showsFPS = false
view.showsNodeCount = false
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用addSubView和removeFromSuperview函数从超级视图(GameViewController)及其窗口中添加/删除