2014-11-02 52 views
3

我按照我发现的文档(googleAd在swift中)。当我在我的SpriteKit场景中表演时。命令行“bannerView? .rootViewController = Self”出现错误。IOS admob与SpriteKit中的Swift

gamescene not convertible to UIViewController

bannerView = GADBannerView(adSize: kGADAdSizeBanner) 
      bannerView?.adUnitID = "xxxxxxxxxxxxxxxxxxxxx" 
      bannerView?.delegate = self 
      bannerView?.rootViewController = self // -> Error "gamescene not convertible to UIViewController" 
      self.view?.addSubview(bannerView!) 
      bannerView?.loadRequest(GADRequest()) 

      timer?.invalidate() 
      timer = NSTimer.scheduledTimerWithTimeInterval(40, target: self, selector: "GoogleAdRequestTimer", userInfo: nil, repeats: true) 

回答

4

你需要把这个代码在viewDidLoad中内GameViewController.swift不GameScene.swift。

记得将GADBannerViewDelegate添加到类中。

例子:

class GameViewController: UIViewController, GADBannerViewDelegate { 

var scene: GameScene! 
var adBannerView: GADBannerView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

     // Configure the view. 
     let skView = view as SKView 
     skView.showsFPS = false 
     skView.showsNodeCount = false 
     skView.showsPhysics = false 

     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 

     /* Set the scale mode to scale to fit the window */ 
     scene = GameScene(size: skView.bounds.size) 
     scene.scaleMode = .AspectFill 

     skView.presentScene(scene) 

    adBannerView = GADBannerView(frame: CGRectMake(0, 0, self.view.frame.size.width, 50)) 
    adBannerView.delegate = self 
    adBannerView.rootViewController = self 
    adBannerView.adUnitID = "YOUR AD ID" 

    var reqAd = GADRequest() 
    reqAd.testDevices = [GAD_SIMULATOR_ID] // If you want test ad's 
    adBannerView.loadRequest(reqAd) 
    self.view.addSubview(adBannerView) 


} 

我已经提到两个环节,可提供有关如何将谷歌广告的(AdMob的)到一个应用程序的例子。

Google Ad's with Swift Example 1 (more detailed)

Google Ad's with Swift Example 2

我希望这有助于

+0

感谢Nfinity这么多。我知道了 – 2014-11-06 10:56:28

+0

@PoisonedApps设置adBannerView的框架的y值是否等于'self.frame.height - 50'?我这样说是因为self.view是SKView,因此(0,0)从左上角开始,而不是典型的UIView右下角。 – justColbs 2016-02-25 21:24:24