これはかなり長いですが、おそらく本当に簡単な修正です。 DRSwift Admobインタースティシャルエラー
ねえ、私は私のスウィフトSpriteKitベースのゲームで動作するようにAdmobの格子間を得る上で、約10のチュートリアルに従ってきた、この最も は、ちょうど下にスキップし、TLがあるだろう、コードです。私が見たすべてのチュートリアルを除いて、ボタン付きのIBActionを使用します。 現在のところ、メニューの中に広告が表示されることがあります。 (ちょうど始めて、私は後でそれを変更するかもしれない)。 これは完全に機能しますが、一度再生ボタンを押すと(別のシーンに)、メニューシーンに戻ります。 (GameScene)インタースティシャル機能はもはや発生しません。エラーはありません。アプリが完全に閉じられてから再開されるまではそれ以上は機能しません。
ここにコードがあります。
var interstital: GADInterstitial!
そして、私が持っているGameViewControllerいた負荷に:
GameViewControllerクラスでもif let scene = GameScene(fileNamed:"GameScene") {
let skView = self.view as? SKView
skView!.ignoresSiblingOrder = false
scene.scaleMode = .AspectFill
scene.viewController = self
skView!.presentScene(scene)
interstital = GADInterstitial(adUnitID: "ca-app-pub-9776687746813194/9687097060")
let request = GADRequest()
interstital.loadRequest(request)
私は、これらの機能を持っている:
func ShowAd() {
print("doing the showadfunc now")
if (interstital.isReady) {
print("there is an inter ready")
interstital.presentFromRootViewController(self)
interstital = CreateAd()
}
else{
print("The interstitial wasn't ready.")
}
}
func CreateAd() -> GADInterstitial {
let interstital = GADInterstitial(adUnitID: "ca-app-pub-9776687748683194/9687247060")
interstital.loadRequest(GADRequest())
return interstital
}
私が持っている私のGameViewControllerクラスで 私のGameScene(メニュー)クラスでは、私は持っています:
var viewController: GameViewController!
私のGameSceneのクラスでは、インタースティシャル広告を表示するこの機能があります。だから、
func adThing(){
//viewController?.ShowAd()
print("starting the ad function")
let waitForInterstitial = SKAction.waitForDuration(15.0)
let waitForInterstitialShort = SKAction.waitForDuration(3.0)
let showInterstitialAd = SKAction.runBlock({self.viewController?.ShowAd(); print("the function has been called..")})
let waitThenShowInterstitial = SKAction.sequence([showInterstitialAd,waitForInterstitial])
let waitThenShowInterStitialForever = SKAction.repeatActionForever(waitThenShowInterstitial)
//self.runAction(waitThenShowInterStitialForever)
self.runAction(waitForInterstitialShort, completion: {
print("its waited 3 seconds and will now start the ad thingo")
self.runAction(waitThenShowInterStitialForever)
})
print("done")
}
、私は(私はそれが、少なくともそれが関数を呼び出していると考えて確認している。)、20秒ごとに私のGameSceneに(gameviewcontrollerに位置しています)ShowAd関数を呼び出すとき、それは完璧に動作アプリは最初に開かれています。しかし、場面を変えてメニューシーン(GameScene)に戻ると、GameScene関数のPrints関数が継続していて、コードははShowAd関数を呼び出していると思いますが、何も起こっていないようです。 GameViewControllerのShowAd機能に含まれているプリントさえありません。
シーンを変更して戻った後のように、私のゲームはGameViewControllerのことを忘れてしまったようです。私が '?'を付けずにGameViewControllerを参照すると、それはエラーで私のゲームをクラッシュさせる "予期せず、オプションのラップを解除している間に無かった"ですから、シーンを変更した後は、おそらくGameViewControllerがnilになりますか?どうしたらいいですか?
私を助けてください! (私はプログラミングに慣れていないので、私のコードについて卑猥なコメントをするのは魅力的でなければならないことを知っています。それは現時点では裸の骨であり、あまり良いことではありません)。
ありがとうあなたが私を助けることができれば、あなたが助けてくれるなら、私は助けてくれるでしょう)。
徹底的で早期のフィードバック返信いただきありがとうございます!私はすぐにこれに取り組み、あなた(そして他の誰か)がそれがどのように進むのかを知らせるでしょう! –
また、Daniel Stormのコメントもチェックしてください。間違って読み込んでいます。まず広告を作成し、それを提示します。 – crashoverride777
また、以前にcreateAdを呼び出すようにコードを更新する必要があります。現時点では、新しい広告を残しておき、残っている広告を表示したいとします。彼らはあなたが望むようにすぐに準備ができるように、シーンの背後にあらかじめロードする必要があります。 – crashoverride777