Edited at

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

More than 3 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 秒毎など)に基づいてインタースティシャル広告を表示する場合は、広告と広告の合間の時間が短くなりすぎないように配慮します。