バージョン
Unity:2020.1.4f1
Google Mobile Ads Unity Plugin:v5.3.0
インタースティシャル広告実装の流れ
※UnityにGoogle Mobile Ads Unity Pluginをインポートしている前提
終わっていない方はこちらの記事を参考にしてください
-
【Unity】admobプラグインのインポート
続きを見る
1:広告ユニットの作成
2:インタースティシャル広告表示の実装
といった感じです、では早速広告ユニットの作成からやっていきましょう
1:広告ユニットの作成
まずは、admobにログインしてください!
ログインが完了したら「アプリ > 広告ユニット」をクリックしてください
まだ広告ユニットを作成していなかったら「広告を表示する広告ユニットの作成」と表示されると思うので「スタート」をクリックして「インタースティシャル」を選択してください
適当に広告ユニット名を付けて「広告ユニットを作成」をクリックしてください
下画像のようになっていれば成功です!
緑枠内に、コード実装時に必要となる広告ユニットIDが表示されています
2:インタースティシャル広告表示の実装
さぁお待ちかねのコーディングの時間です笑
とりあえず必要最低限のコードを記載しておきます
using UnityEngine; using GoogleMobileAds.Api; using System; public class InterstitialAdTest : MonoBehaviour { private string adUnitId; private InterstitialAd interstitialAd; // Use this for initialization void Start() { //アプリ起動時に一度必ず実行(他のスクリプトで実行していたら不要) MobileAds.Initialize(initStatus => { }); //広告を表示 RequestInterstitial(); } //広告を表示するメソッド public void RequestInterstitial() { #if UNITY_ANDROID //adUnitId = "広告ユニットIDをコピペ(Android)"; //本番 adUnitId = "ca-app-pub-3940256099942544/1033173712"; //テスト #elif UNITY_IOS //adUnitId = "広告ユニットIDをコピペ(iOS)"; //本番 adUnitId = "ca-app-pub-3940256099942544/4411468910"; //テスト #endif this.interstitialAd = new InterstitialAd(adUnitId); AdRequest request = new AdRequest.Builder().Build(); interstitialAd.LoadAd(request); if(this.interstitialAd.IsLoaded()) { this.interstitialAd.Show(); } } }
このスクリプトを何かのオブジェクトにアタッチすれば、エラーが起きなければ表示はされると思います!
コードについて少し解説していきます
2行目:using GoogleMobileAds.Api;
これを記載しないとエラーのオンパレードになるので必ず追加してください!
14行目:MobileAds.Initialize(initStatus => { })
このコードはアプリ起動時に一度だけ呼ばれていればいいので、もし他のスクリプトで実行されていれば省略することができます
※動画リワード広告やバナー広告も表示するからといって、2回も3回も実行する必要はありません!
22~28行目:adUnitId = "広告ユニットIDをコピペ"
ここには、手順1で作成した広告ユニットIDをそれぞれコピペしてください!
※テスト表示する際は必ずテスト広告IDを使用してください!(テスト広告ID一覧)
30~35行目
30行目:this.interstitialAd = new InterstitialAd(adUnitId);
広告ユニットIDを指定してInterstitialAdをインスタンス化します
広告ユニットIDは22~28行目で変数に代入しているのでこのままで大丈夫です!
※公式ドキュメントによると、「iOS では、InterstitialAdオブジェクトは使い捨てオブジェクト」だそうです。つまり、InterstitialAdオブジェクトを使い回すと同じ広告ばかり流れるってことかな..?
31行目:AdRequest request = new AdRequest.Builder().Build();
空のrequestを作成します
32行目:interstitialAd.LoadAd(request);
インタースティシャル広告をロードします
33行目:if(this.interstitial.IsLoaded())
インタースティシャル広告がロードされているかどうかを確認しています
ロードされていればtrueが返されることになっています
35行目:this.interstitialAd.Show();
インタースティシャル広告の表示は、広告のロードが完了されていることを確認してから行ってください!
以上でインタースティシャル広告の実装完了です、ただし実機じゃないと広告(テスト広告も含め)は表示されません!
※InterstitialAdの使用を終了する場合は、Destroy()メソッドを呼ばないとメモリリーク起こるみたいです..汗
「広告イベントについて」で使い方説明します
スポンサーリンク
広告イベントについて
広告が読み込みが失敗した時に実行したい処理がある時や、広告が表示された時に実行したい処理がある場合などは、イベントを利用しましょう(詳しくはAdMob-インタースティシャル広告-広告イベントをご覧ください)
公式のドキュメントを読んでもよくわかんない方がいると思うので(過去の私がそうでした笑)使い方について少し説明します
例として広告が閉じられた時に『Destroy()』メソッドを実行する場合を考えます
using UnityEngine; using GoogleMobileAds.Api; public class InterstitialAdTest : MonoBehaviour { private string adUnitId; private InterstitialAd interstitialAd; // Use this for initialization void Start() { //アプリ起動時に一度必ず実行(他のスクリプトで実行していたら不要) MobileAds.Initialize(initStatus => { }); //広告を表示 RequestInterstitial(); } //広告を表示するメソッド public void RequestInterstitial() { #if UNITY_ANDROID adUnitId = "広告ユニットIDをコピペ(Android)"; //本番 //adUnitId = "ca-app-pub-3940256099942544/1033173712"; //テスト #elif UNITY_IOS adUnitId = "広告ユニットIDをコピペ(iOS)"; //本番 //adUnitId = "ca-app-pub-3940256099942544/4411468910"; //テスト #endif this.interstitialAd = new InterstitialAd(adUnitId); //ここ追加!これで、動画が閉じられたときに「HandleOnAdClosed」が呼び出されます this.interstitialAd.OnAdClosed += HandleOnAdClosed; AdRequest request = new AdRequest.Builder().Build(); interstitialAd.LoadAd(request); if(this.interstitialAd.IsLoaded()) { this.interstitialAd.Show(); } } //広告が閉じられたときに行いたい処理 public void HandleOnAdClosed(object sender, EventArgs args) { //メモリリーク阻止! interstitialAd.Destroy(); } }
これだけです!簡単ですね!
他にも広告の読み込みが完了した時に呼ばれるイベントや、広告の読み込みが失敗した時に呼ばれるイベントなどがあります。その他のイベントに関してはAdMob-インタースティシャル広告-広告イベントに記載されているので読んでみてください
公式ドキュメントには「デリゲート」とかよくわかんない言葉が書いてあると思いますが、わからない方は気にしないでください!知らなくても広告は表示できるので、時間があるときにでも調べてみてください!
他の広告実装方法
バナー広告
-
【Unity】admobバナー広告の実装
続きを見る
動画リワード広告
-
【Unity】admob動画リワード広告の実装
続きを見る