UnityにAdmob広告表示。インタースティシャル広告が連続で表示する場合の注意など

##UnityでAdmob広告を使用する場合の注意
使い方は簡単なのですがたまに表示されなかったりする場合の注意など。

###インタースティシャル広告を連続で出す

みんな大好きAdmob。インタースティシャル広告を連続で出す場合は注意が必要です。
広告を閉じた際にDestryo後、再度Requestを行わなければなりません【Destroy()およびRequestInterStitial()】
OnAdFailedToLoad/OnAdClosed/ OnAdLeavingApplicationなどのイベントを利用しましょう。

```csharp

using UnityEngine;
using System.Collections;
using System;
using GoogleMobileAds;
using GoogleMobileAds.Api;


public class AdMob : MonoBehaviour<AdMob> {

    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();
        }
    }
    /// <summary>
    /// 広告が閉じたときにDestroyして再生成する
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="args"></param>
    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に
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
を追加すれば良いのですが、広告自体が表示されないことがまれによくあります。

こういうときは、大概以下のどれかが原因です。
<ul>
<li>広告IDが間違っている、配信されていない</li>
広告IDのコピペミス。「ca-app-pub-xxx/xxx」のスラッシュ以降のコピペ漏れ。申請すぐの使用でまだ配信されていない。
<li>AndroidManifest.xmlがおかしい</li>
これ結構有ります。特に、既存プロジェクトでごちゃごちゃしている場合にありがちです。一旦バックアップを取ってマニフェストファイルを整理するとあら不思議、表示されちゃったりします。
<li>jarファイルの不足</li>
古いjar（android-support-v4.jar、unity-admob-plugin.jar）が重複している場合はビルドエラーになりますが、不足しているとアプリが落ちたり広告が表示されなかったりします。
Plugins/Androidフォルダーを右クリックしてResolveClientJarsしましょう（PlayServiceResolver万歳）
</ul>
<a href="http://www.alice3.net/wp-content/uploads/2016/11/161119-02.jpg"><img src="http://www.alice3.net/wp-content/uploads/2016/11/161119-02.jpg" alt="161119-02" width="654" height="209" class="alignnone size-full wp-image-2971" /></a>