2016-02-04 8 views
0

У меня эти межстраничные объявления facebook, и когда я их называю в своей GameScene, они не появляются. Они отлично работают, когда я называю их в GameViewController, но не в моей GameScene. Может ли кто-нибудь сказать мне, что я делаю неправильно с моим кодом?Почему мои межстраничные объявления не работают в моей GameScene, а работают в GameViewController в Swift?

//GameViewController.swift 

class GameViewController: UIViewController, FBInterstitialAdDelegate { 
let interstitialFBAD: FBInterstitialAd = FBInterstitialAd(placementID: "65543456456456_454345345454534") 


override func viewDidLoad() { 
    super.viewDidLoad() 

} 

//CALL THIS IN MY GAMESCENE. 
func loadFBInterstitialAd() { 
interstitialFBAD.delegate = self 
interstitialFBAD.loadAd() 
} 

func interstitialAdDidLoad(interstitialAd: FBInterstitialAd!) { 
    interstitialFBAD.showAdFromRootViewController(self) 
} 

//GameScene.swift 

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     for touch in touches { 
     let location = touch.locationInNode(self) 
     let node = self.nodeAtPoint(location) 

     if node.name == "retry" { 

      GameViewController().loadFBInterstitialAd() 
     } 
     } 
     } 

ответ

0

В viewDidLoad регистратора GameViewController для уведомления, а позже из GameScene публикуется уведомление, когда вы хотите, чтобы объявление отображалось.

так что ваш viewDidLoad будет иметь следующую дополнительную строку

NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadFBInterstitialAd", name: "loadAd", object: nil) 

затем написать метод в Gamescene

func showAdNow() { 
    NSNotificationCenter.defaultCenter().postNotificationName("loadAd", object: nil) 
} 

теперь Gamescene.swift заменить строку

GameViewController().loadFBInterstitialAd() 

с

showAdNow() 
+0

Итак, я попробовал ваш код, но объявления все еще не появляются, и я получаю это предупреждение в консоли: Предупреждение: попытайтесь представить в , который уже представляет coding22

+0

Никогда не работает! Спасибо!! – coding22

+0

Bounty, если ваша проблема решена. Что касается предупреждения 'UIActivityController', вы показываете' UIActivityController'? Если это так, убедитесь, что он уволен, прежде чем пытаться представить объявление. – uchiha

0

Вы пытаетесь:

//GameViewController.swift 
class GameViewController: UIViewController, FBInterstitialAdDelegate { 
let interstitialFBAD: FBInterstitialAd = FBInterstitialAd(placementID: "65543456456456_454345345454534") 

var scene: GameScene! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let skView = view as! SKView 
    skView.multipleTouchEnabled = false 
    scene = GameScene(size: skView.bounds.size) 
    scene.scaleMode = .AspectFill 
    scene.view?.userInteractionEnabled = true 
    skView.presentScene(scene) 
    scene.gvcDelegate = self 
} 

    //GameScene.swift 
class GameScene: SKScene { 
    gvcDelegate: GameViewController? 
    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     for touch in touches { 
     let location = touch.locationInNode(self) 
     let node = self.nodeAtPoint(location) 
     if node.name == "retry" { 
      gvcDelegate.loadFBInterstitialAd() 
     } 
     } 
    } 

GOODLUCK!

+0

Хорошо, попробуйте сейчас. – coding22

+0

Что gvcdelegate? – coding22

+0

gvcdelegate заменен GameViewController – chaunv