【Unity】UnityにAdmob広告表示。インタースティシャル広告が連続で表示する場合の注意など
UnityでAdmob広告を使用する場合の注意
使い方は簡単なのですがたまに表示されなかったりする場合の注意など。
インタースティシャル広告を連続で出す
みんな大好きAdmob。インタースティシャル広告を連続で出す場合は注意が必要です。
広告を閉じた際にDestryo後、再度Requestを行わなければなりません【Destroy()およびRequestInterStitial()】
OnAdFailedToLoad/OnAdClosed/ OnAdLeavingApplicationなどのイベントを利用しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
using UnityEngine; using System.Collections; using System; using GoogleMobileAds; using GoogleMobileAds.Api; public class AdMob : MonoBehaviour { public BannerView bannerView; private InterstitialAd interStitialView; public enum Position { TOP, BOTTOM, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, } [SerializeField] public string iPhoneAdmobID; [SerializeField] public string iPhoneInterstitialAdmobID; [SerializeField] public string androidAdmobID; [SerializeField] public string androidInterstitialAdmobID; [SerializeField] public Position position; void Start () { } public void RequestBanner() { string adunitID = ""; #if UNITY_IPHONE adunitID = iPhoneAdmobID; #elif UNITY_ANDROID adunitID = androidAdmobID; #else adunitID = androidAdmobID; #endif bannerView = new BannerView(adunitID, AdSize.Banner, (AdPosition)position); AdRequest adRequest = new AdRequest.Builder().Build(); bannerView.LoadAd(adRequest); } public void RequestInterStitial() { string adunitID = ""; #if UNITY_IPHONE adunitID = iPhoneInterstitialAdmobID; #elif UNITY_ANDROID adunitID = androidInterstitialAdmobID; #else adunitID = androidInterstitialAdmobID; #endif // Initialize an InterstitialAd. interStitialView = new InterstitialAd(adunitID); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // 広告が閉じたときのイベント登録 //ちなみに古いAdmobのSDKだと.AdClosedとか微妙に違う interStitialView.OnAdFailedToLoad += HandleInterstitialFailedToLoad; interStitialView.OnAdClosed += HandleInterstitialClosed; interStitialView.OnAdLeavingApplication += HandleInterstitialLeftApplication; interStitialView.LoadAd(request); } public void showInterstitial() { if (interStitialView != null && interStitialView.IsLoaded()) { interStitialView.Show(); } } /// /// 広告が閉じたときにDestroyして再生成する /// |
/// /// void HandleInterstitialClosed(object sender, EventArgs args) { if(interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } void HandleInterstitialFailedToLoad(object sender, EventArgs args) { if (interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } void HandleInterstitialLeftApplication(object sender, EventArgs args) { if (interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } }
広告が表示されない場合
広告がクリックできないときはAndroidManifest.xmlに
を追加すれば良いのですが、広告自体が表示されないことがまれによくあります。
こういうときは、大概以下のどれかが原因です。
- 広告IDが間違っている、配信されていない
広告IDのコピペミス。「ca-app-pub-xxx/xxx」のスラッシュ以降のコピペ漏れ。申請すぐの使用でまだ配信されていない。
- AndroidManifest.xmlがおかしい
これ結構有ります。特に、既存プロジェクトでごちゃごちゃしている場合にありがちです。一旦バックアップを取ってマニフェストファイルを整理するとあら不思議、表示されちゃったりします。
- jarファイルの不足
古いjar(android-support-v4.jar、unity-admob-plugin.jar)が重複している場合はビルドエラーになりますが、不足しているとアプリが落ちたり広告が表示されなかったりします。
Plugins/Androidフォルダーを右クリックしてResolveClientJarsしましょう(PlayServiceResolver万歳)
ディスカッション
コメント一覧
まだ、コメントがありません