2017-04-19 29 views
1

私のゲームがゲームオーバーシーンに移行するたびに、AdMobインタースティシャル広告を表示しようとしています。ただし、ビューコントローラのviewDidLoad()関数で初期化関数を使用すると、広告が表示されます。ゲームセンターに通知センターを設置し、GameOver Sceneに入ったら通知を送信して、広告を初期化する機能をトリガーしましたが、そのトリックはしませんでした。私は、ビューコントロールのviewDidLoad関数にそれを置くのは、アプリケーションの起動時にただちに表示するのではなく、いつでもシーンからトリガーできる方法が不思議でした。私GameViewControllerでSpriteKitのAdMobインタースティシャル広告

は、これら2つの機能である:ここでは

public func initAdMobInterstitial() { 

    adMobInterstitial = GADInterstitial(adUnitID: AD_MOB_INTERSTITIAL_UNIT_ID) 
    adMobInterstitial.delegate = self 
    let request = GADRequest() 
    request.testDevices = ["ddee708242e437178e994671490c1833"] 

    adMobInterstitial.load(request) 

} 

func interstitialDidReceiveAd(_ ad: GADInterstitial) { 

    ad.present(fromRootViewController: self) 

} 

私はそれがコメント解除されたときしかし広告がポップアップし、正常に動作し、initAdMobInterstitialをコメントアウトしています。このポップアップは、アプリが初めて起動するとすぐに表示されます。

override func viewDidLoad() { 
    super.viewDidLoad() 

    //initAdMobInterstitial() 

    initAdMobBanner() 

    NotificationCenter.default.addObserver(self, selector: #selector(self.handle(notification:)), name: NSNotification.Name(rawValue: socialNotificationName), object: nil) 

    let scene = Scene_MainMenu(size: CGSize(width: 1024, height: 768)) 
    let skView = self.view as! SKView 

    skView.isMultipleTouchEnabled = true 

    skView.ignoresSiblingOrder = true 

    scene.scaleMode = .aspectFill 

    _ = SGResolution(screenSize: view.bounds.size, canvasSize: scene.size) 

    skView.presentScene(scene) 

} 

ここで、GameOverというタイトルの私のシーンの1つで、私は広告をポップアップしたい。私は場面が提示されるたびに出てくるので、プレイヤーが敗北してゲームをぶつけるたびに出てきたい。あなたは私のビューコントローラクラスで見ることができます通知センターを使用して、

override func didMove(to view: SKView) { 

    self.sendNotification(named: "interNotif") 

は}この機能によって

...、もで見つかった...私は通知を送信しようとした、それが処理されていますView Controllerクラスのノートとしても

func handle(notification: Notification) { 

    if (notification.name == NSNotification.Name(rawValue: interstitialNotificationName)) { 

     initAdMobInterstitial() 

    } 
} 

は、私のビューコントローラに私が送られた通知を一致させるために、文字列「interNotif」に等しいinterstitialNotificationName宣言しています。

+0

あなたのコードを共有してください。 – Evana

答えて

1

ロードするとすぐにGADInterstitialを提示しないでください。あなたの通知機能がそれを提示しているはずです。その後、ユーザーが別の広告リクエストを一度却下すると、たとえば:GADInterstitialDelegate広告イベントの完全なリストについては

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Load the ad 
    initAdMobInterstitial() 
} 

func interstitialDidReceiveAd(_ ad: GADInterstitial) { 
    // Do not present here 
    // ad.present(fromRootViewController: self) 
} 

func handle(notification: Notification) { 
    if (notification.name == NSNotification.Name(rawValue: interstitialNotificationName)) { 
     // Check if the GADInterstitial is loaded 
     if adMobInterstitial.isReady { 
      // Loaded so present it 
      adMobInterstitial.present(fromRootViewController: self) 
     } 
    } 
} 

// Called just after dismissing an interstitial and it has animated off the screen. 
func interstitialDidDismissScreen(_ ad: GADInterstitial) { 
    // Request new GADInterstitial here 
    initAdMobInterstitial() 
} 

AdMob iOS Ad Eventsを参照してください。

+0

私はあなたがこれをした理由を理解していますが、広告はまだ表示されません。私がdidRecieveAd関数をそこから読み込んでいない場合はどうすればいいですか? – Matt

関連する問題