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

时间:2015-12-21 12:37:12

标签: ios swift uiviewcontroller sprite-kit admob

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

我的游戏只有1 urlPhoto和1 ViewController。与这两种实现的不同之处在于它们的创建时间和地点。

两者都要求:

GameScene

这是我首先实施它的方式:

in:GameViewController.swift

import GoogleMobileAds
var googleBannerView: GADBannerView!

这是第二种方式:

in:GameScene.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
        }
    }
 }

我认为唯一真正的区别在于你如何设置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 } ,并且鉴于我的游戏只有1个ViewController,两者都有效......

哪种更好的实施?

1 个答案:

答案 0 :(得分:1)

你绝对应该通过视图控制器这样做。从设计的角度来看,这更有意义。 GameScene的工作只是担心游戏内容。视图控制器的工作是管理和控制视图(因此名称为“View Controller。”)