gpt4 book ai didi

ios - 在 Swift 中的特定场景中显示广告

转载 作者:可可西里 更新时间:2023-11-01 01:58:56 24 4
gpt4 key购买 nike

我正在使用 SpriteKit 制作 iOS 游戏,并且刚刚实现了 adMob(链接到 Firebase)。但是,按照 Google 提供的步骤并在 ViewController 中添加代码后,它会在所有场景(如 Main Menu Scene、Game Scene 和 Game Over Scene)上显示广告。我希望横幅广告仅显示在主菜单和游戏结束场景中。

下面是我在 GameViewController 中的代码:

import GoogleMobileAds

var bannerView: GADBannerView!
var admobBanner = UIView()

class GameViewController: UIViewController, GADBannerViewDelegate {

override func viewDidLoad() {
super.viewDidLoad()

//Advertisments
// In this case, we instantiate the banner with desired ad size.
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
addBannerViewToView(bannerView)
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.load(GADRequest())

admobBanner = bannerView
//

if let view = self.view as! SKView? {
// Load the SKScene from 'MainMenuScene.sks'
if let scene = MainMenuScene(fileNamed: "MainMenuScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .resizeFill //change back to aspectFill if experiencing problems

// Present the scene
view.presentScene(scene)
}

view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
}

//Advertisments
func addBannerViewToView(_ bannerView: GADBannerView) {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
view.addConstraints([NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: bottomLayoutGuide, attribute: .top, multiplier: 1, constant: 0), NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0)])
}

后来,为了隐藏 GameScene 上的广告,我将这段代码放在 GameScene 的 DidMoveToView 中:

admobBanner.removeFromSuperview()

这可以隐藏游戏场景中的横幅广告,但不会在其他场景中重新启用。如何在 MainMenu 和 GameOver 场景中“重新启用”它?我尝试这样做以重新启用 MainMenu 和 GameOver 场景中的广告,但它不起作用(错误和警告已显示为注释):

func showBanner(){
if admobBanner == nil { //WARNING: Comparing non-optional value of type 'UIView' to nil always returns false

bannerView = GADBannerView(adSize: kGADAdSizeBanner)
addBannerViewToView(bannerView) //ERROR: Use of unresolved identifier 'addBannerViewToView'
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.delegate = self //ERROR: Cannot assign value of type 'MainMenuScene' to type 'UIViewController?'
bannerView.load(GADRequest())

admobBanner = bannerView
}
}

那么,问题来了,如何在某些场景显示横幅广告,而在其他场景隐藏它们?任何帮助深表感谢! :)

最佳答案

处理 GameViewController.swift 文件中的所有横幅内容。在那里,为 bannerView 变量分配一个标记值。然后当场景加载时,使用标签 id 加载 bannerView,然后将其 .isHidden 属性设置为 true

GameViewController.swift

bannerView.tag = 100

游戏.swift

// hide banner
let bannerView = self.view?.viewWithTag(100) as! GADBannerView?
bannerView?.isHidden = true

您也可以在其他场景上执行此操作,只需确保为您执行此操作的每个场景导入 Google SDK。

关于ios - 在 Swift 中的特定场景中显示广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com