2016-07-19 9 views
1

インタースティシャルが正しく発射されるための助けが必要な簡単なアプリがあります。アプリはちょうど2つのビューです。 MainVCおよびModalVC。 ModalVCで、MainVCにユーザーを戻る[閉じる]ボタンがあります:Swift/XCode - disMissViewController中のAdMobインタースティシャル

self.performSegueWithIdentifier("mainSegue", sender: self) 
// Present Modally segue, default presentation, cross dissolve transition. 

主な問題:

@IBAction func closeButtonPressed(sender: UIButton) { 
    self.dismissViewControllerAnimated(true, completion: nil). 
} 

がModalVCにMainVCから取得するには、私は次のように使用しています私はがcloseButtonPressedでインタースティシャルを起動させるようにしています。私はインタースティシャルを起動したいのですが、バックグラウンドではdismissViewControllerが実行されます。ユーザーがインタースティシャルを終了すると、MainVCに戻ります。 (インタースティシャルは4回のトランジションごとに発生しますが、今週の主な問題ではそれほど重要ではありません)インタースティシャルの読み込みが行われ、その後すぐに終了します。以下のコードを参照してください。

@IBAction func closeButtonPressed(sender: UIButton) { 
    //INTERSTITIAL TRIGGER! 
    if (self.interstitial.isReady) { 
     self.interstitial.presentFromRootViewController(self) 
     self.interstitial = self.createAd() 
     dismissViewControllerAnimated(true, completion: nil) 
    } 
    else { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

はまた、私はなお、上記のコードと同じ結果が得られ、次のGADInterstitialDelegate方法を...試み:

@IBAction func closeButtonPressed(sender: UIButton) { 
    //INTERSTITIAL TRIGGER! 
    if (self.interstitial.isReady) { 
     self.interstitial.presentFromRootViewController(self) 
     self.interstitial = self.createAd() 

     interstitialDidReceiveAd(interstitial) 
    } 
    else { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 
} 
/// Called when an interstitial ad request succeeded. 
func interstitialDidReceiveAd(ad: GADInterstitial!) { 
    print("interstitialDidReceiveAd") 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

Iはまた、[CLOSEにアンワインドセグエを試し] MainVCで次のトリガーボタン:

私は、このエラーを与えた
@IBAction func unwindToMain(segue: UIStoryboardSegue) { 
    // unwinded 
    if (self.interstitial.isReady) { 
     self.interstitial.presentFromRootViewController(self) 
     self.interstitial = self.createAd() 
    } 
} 

警告:提示しようとしGADInterstitialViewController:testAd.MainVCの0x7f9e01ca7a80:ビューがウィンドウ階層にない0x7f9e02c44b50!

理想的には、私はInterstitialトリガーがすべてMainVCが現れる前にインタースティシャルを表示させたいので、ModalVCに留まることが理想です。

助けていただければ幸いです。このタイヤで一日以上タイヤを回転させていた... Whew ...事前に感謝!

+0

これは私が何をしようとしていると非常によく似ていますが(または誰かに別の解決策がある場合)https://storage.googleapis.com/support-kms-prod/91E0E29ADFA1A1BF42097E0699CC491BE874(https://support.google.com/admob/answer/6201362から取得しましたか? hl = ja&ref_topic = 2745287) – Joe

答えて

1

最後にこれを考え出しました。ここでのトリックは、インタースティシャルをトリガーするためにView Controllerのボタンを使うことです。その後、間質と同じビュー上で、具体的には、GADInterstitialDelegateメソッドを使用します。

class ModalVC: UIViewController, GADInterstitialDelegate 

    func interstitialWillDismissScreen(ad: GADInterstitial!) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

interstitialWillDismissScreenここでは、使用できるすべての間隙デリゲートメソッドの完全なリストです:https://firebase.google.com/docs/admob/ios/ad-events

関連する問題