注:このトピックは、既に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
イベントで、インタースティシャル広告を呼び出すデリゲートを設定する必要があるようです。
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秒も開けずに連続表示してみると、インタースティシャル広告が表示されない時がありました。
インタースティシャル広告を何度も表示(非推奨)
インタースティシャル広告の表示は、ユーザーの迷惑にならない程度に抑えておきましょう。何度も表示すると、ユーザーの利便性が損なわれ、意図しないクリックを招く原因ともなります。ユーザーの行動(オプションの選択など)に基づいてインタースティシャル広告を表示する場合は、ユーザーが何かするたびに広告を挟むのは避けましょう。
一定の間隔(60 秒毎など)に基づいてインタースティシャル広告を表示する場合は、広告と広告の合間の時間が短くなりすぎないように配慮します。