ios - 在 SpriteKit/Swift 中显示 GADBannerView 的最佳方式

标签 ios swift uiviewcontroller sprite-kit admob

所以,我发现了两种在我的 SpriteKit 游戏中显示谷歌广告的方法...两种方法都有效,但我担心其中一种更有效等。

我的游戏只有 1 个 ViewController 和 1 个 GameScene。这两种实现的区别在于它们的创建时间和位置。

两者都需要:

import GoogleMobileAds
var googleBannerView: GADBannerView!

这是我最初实现它的方式:

在:GameViewController.swift

override func viewWillLayoutSubviews() {    
    super.viewWillLayoutSubviews()

    googleBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
    googleBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"

    googleBannerView.rootViewController = self
    let request: GADRequest = GADRequest()
    googleBannerView.loadRequest(request)

    googleBannerView.frame = CGRectMake(0, view.bounds.height - googleBannerView.frame.size.height, googleBannerView.frame.size.width, googleBannerView.frame.size.height)

    self.view.addSubview(googleBannerView!)


    if let skView = self.view as? SKView {  //cast root as SKView
        if skView.scene == nil {
            //create and present gameScene
        }
    }
 }

这是第二种方式:

在:GameScene.swift

override func didMoveToView(view: SKView) {

    googleBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
    googleBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"

    googleBannerView.rootViewController = self.view?.window?.rootViewController
    let request: GADRequest = GADRequest()
    googleBannerView.loadRequest(request)

    googleBannerView.frame = CGRectMake(0, view.bounds.height - googleBannerView.frame.size.height, googleBannerView.frame.size.width, googleBannerView.frame.size.height)

    self.view?.addSubview(googleBannerView!)

    addChild(worldNode) //make whole world a node, create game nodes, in worldNode
    switchToMainMenu()  //go to menu menu
}

我认为唯一真正的区别是您如何设置 rootViewController,鉴于我的游戏只有 1 个 ViewController,两者都可以工作...

哪种实现方式更好?

最佳答案

您绝对应该通过 View Controller 执行此操作。从设计的角度来看,这更有意义。 GameScene 的工作是只关心游戏内容。 View Controller 的工作是管理和控制 View (因此名称为“ View Controller ”。)

关于ios - 在 SpriteKit/Swift 中显示 GADBannerView 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395874/

相关文章:

ios - 同时动画两个 UIView subview 不起作用

objective-c - 如何获取 Root View Controller ?

ios - 如何在 Swift 3 中使用 UIWebview 将动态网页保存在缓存中

ios - 图像亮度/对比度 - Xamarin iOS

objective-c - AVMutableComposition 旋转视频

ios - Swift:尝试制作一个从现在到一小时后倒计时的应用程序

swift - 如何使用 Swift 将图像值传递给 ImageSlideshow

ios - Firebase Crashlytics 无法与 DJI iOS SDK 一起使用

ios - iOS 数组索引超出范围

ios - 获取当前堆栈上 View Controller 的引用