2016-12-08 3 views
1

私は広告を初めて実装しました。私はadMobを使用しています。私はさまざまなコードを使いこなしてきましたが、私がそれを破壊したら、新しい広告を作成することはできません。今広告(adMob)を元通りに戻すにはどうすればいいですか?

private void RequestInterstitial() 
{ 
    // These ad units are configured to always serve test ads. 
    #if UNITY_EDITOR 
    string adUnitId = "unused"; 
#elif UNITY_ANDROID 
    string adUnitId = "ca-app-pub-3895731736666139/7005438200"; 
#elif UNITY_IPHONE 
    string adUnitId = "hmm"; 
#else 
    string adUnitId = "unexpected_platform"; 
#endif 

    // Create an interstitial. 
    this.interstitial = new InterstitialAd(adUnitId); 

    // Register for ad events. 
    this.interstitial.OnAdLoaded += this.HandleInterstitialLoaded; 
    this.interstitial.OnAdFailedToLoad += this.HandleInterstitialFailedToLoad; 
    this.interstitial.OnAdOpening += this.HandleInterstitialOpened; 
    this.interstitial.OnAdClosed += this.HandleInterstitialClosed; 
    this.interstitial.OnAdLeavingApplication += this.HandleInterstitialLeftApplication; 

    // Load an interstitial ad. 
    this.interstitial.LoadAd(this.CreateAdRequest()); 
} 

private void ShowInterstitial() 
{ 
    if (this.interstitial.IsLoaded()) 
    { 
     this.interstitial.Show(); 
    } 
    else 
    { 
     MonoBehaviour.print("Interstitial is not ready yet"); 
     text.text = "No Ad Loaded"; 
    } 
} 

this.interstitial.Destroy(); 

インタースティシャルの「X」をクリックしたときに破壊する関数が呼び出されるんか?破壊しますか

これを元に戻すにはどうすればよいですか?

答えて

2

インタースティシャルの[x]をクリックすると、破棄機能が呼び出されますか?

いいえ。非常にありそうもない。これが正しければ、毎回new InterstitialAd(adUnitId);を実行して広告を再度表示する必要があります。 xをクリックすると、InterstitialAd.Hide();が呼び出される可能性が非常に高いです。

私は別のコードを使いこなしていますが、私はそれを破壊した場合、 は新しい広告を作成できません。

これを元に戻すにはどうすればよいですか?

インタースティシャル宣言が有効範囲外でない限り、破棄しないでください。interstitial.Destroy()を呼び出す必要があります。たとえばについては

間質は、その後、あなたはメモリリークを回避するために、その関数の最後でそれを破壊しなければならない機能の中で宣言された場合。

インタースティシャルが関数/グローバル変数の外で宣言されている場合は、Unity OnDisable()関数でのみインタースティシャルを破棄する必要があります。あなたのケースでは、それはグローバル変数ですので、OnDisable()関数の中にinterstitial.Destroy()を入れて、スクリプトが破棄されるとinterstitialも破棄しなければなりません。

ここで、インタースティシャルが破棄された場合は、interstitial = new InterstitialAd(adUnitId);をもう一度呼び出して、interstitial.LoadAd()に続いてinterstitial.Show()を呼び出して戻すことができます。 interstitial.Show()を呼び出す前に、interstitial.Show()を呼び出す前に、最初に読み込みが完了していることを確認してからif(interstitial.IsLoaded())を確認する必要があります。

最後に、イベントに登録するときには、OnDisable()機能でイベントの登録を解除する必要があります。 +=で登録し、-=で登録を解除してください。したがってinterstitial.Destroy()を呼び出す前にthis.interstitial.OnAdLoaded -= this.HandleInterstitialLoaded;OnDisable()関数内の他のイベントでそれを行う必要があります。

+0

ありがとうございました。 –

+0

ようこそ。私は[ここ](http://stackoverflow.com/a/39882989/3785314)からちょうど話したことのサンプルコードを得ることができます – Programmer

関連する問題