Help us understand the problem. What is going on with this article?

Unityのアプリで、Admobのインタースティシャル広告を連続で出す方法

More than 5 years have passed since last update.

注:このトピックは、既にAdmobプラグインをUnityに組み込んでいるユーザーが対象です。

Googleが提供している広告Admobには、AndroidやiOSだけでなく、Unity用のプラグインもあります。
https://developers.google.com/mobile-ads-sdk/docs/games

これを使うと、バナー広告やインタースティシャル広告も表示できます。
ただ、インタースティシャル広告を使用する場合、上記のURLに載っている方法で表示した場合、一回目は正常に表示されますが、その後、もう一度表示しようとしても表示されません。

その情報は、上記URLのマニュアルには載っておらず、このプラグインのリリースを知らせるGoogleの開発者ブログに載ってます。
なぜ一箇所にまとめていないのかは良く分かりませんが、この情報が意外と見当たらなかったので、備忘録代わりに残しておきます。
http://googleadsdeveloper.blogspot.jp/2014/05/google-mobile-ads-unity-plugin-21-adds.html

このブログによると、Admobのインタースティシャル広告は一回のみ表示される仕様であり、広告を閉じた時にインタースティシャル広告の情報は破棄されるようです。二回、三回と表示するためには、広告を閉じた時に走るAdClosedイベントで、インタースティシャル広告を呼び出すデリゲートを設定する必要があるようです。

interstitial.cs
public InterstitialAd interstitial;

void Start () {
    RequestInterstitial();
    interstitial.AdClosed += delegate(object sender, EventArgs args)
    {
        interstitial.Destroy();
        RequestInterstitial();
    };
}


// AdMob Interstitial
public void RequestInterstitial()
{
    #if UNITY_EDITOR
    string adUnitId = "XXXXXX";
    #elif UNITY_ANDROID
    string adUnitId = "XXXXXX";
    #elif UNITY_IPHONE
    string adUnitId = "XXXXXX";
    #else
    string adUnitId = "unexpected_platform";
    #endif
    // Create an interstitial.
    interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder()
        .AddTestDevice(AdRequest.TestDeviceSimulator)       // Simulator.
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

    // Load the interstitial with the request.
    interstitial.LoadAd(request);
}

public void displayInterstitial()
{
    if (interstitial.IsLoaded())
    {
        interstitial.Show();
    }
    else
    {
        Debug.Log ("Interstitial is not ready yet.");
    }
}

ソース上のXXXXXXや0123456789ABCDEF0123456789ABCDEFは、適当な値なので、任意の値にしてください。

これで任意の場所でdisplayInterstitial();を実行すると、インタースティシャル広告が表示されます。
このインタースティシャル広告を閉じた時に、AdClosedが走り、その時にdelegateで設定されたRequestInterstitial();が実行され、インタースティシャル広告が再度、読み込まれます。

その後、またdisplayInterstitial();を実行してやると、インタースティシャル広告が表示されます。
これで、何らかのイベントが発生するたびに、何度でもインタースティシャル広告が表示されるようになります。

ただし、Admobのインタースティシャル広告は、過剰に繰り返し表示するのは非推奨のようなので、適当な間隔を開けて表示するよう、注意してください。これが原因なのかは分かりませんが、テストの時、10秒も開けずに連続表示してみると、インタースティシャル広告が表示されない時がありました。

https://support.google.com/admob/answer/6066980?hl=ja

インタースティシャル広告を何度も表示(非推奨)

インタースティシャル広告の表示は、ユーザーの迷惑にならない程度に抑えておきましょう。何度も表示すると、ユーザーの利便性が損なわれ、意図しないクリックを招く原因ともなります。ユーザーの行動(オプションの選択など)に基づいてインタースティシャル広告を表示する場合は、ユーザーが何かするたびに広告を挟むのは避けましょう。

一定の間隔(60 秒毎など)に基づいてインタースティシャル広告を表示する場合は、広告と広告の合間の時間が短くなりすぎないように配慮します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away