AdMob 導入方法(自分用)
自分用です。
AdMobでの手続きは割愛します。
- パッケージをインポート
- iOS用設定
- スクリプト
- AdMob用のゲームオブジェクトを作成し、スクリプトをアタッチする。
- インタースティシャルのリクエスト
- インタースティシャルの表示
- バナーの読み込みと表示
パッケージをインポート
(1)下記から、unitypackageをダウンロードする。
Releases · googleads/googleads-mobile-unity · GitHub
(2)GoogleMoblieAds.unitypackageをインポートする。
インポートできたら、プロジェクトにフォルダが増える。
iOS用設定
(1)下記からframeworkをダウンロードする。
Google Mobile Ads SDK | AdMob for iOS | Google Developers
(2)GoogleMovieAds.frameworkをPlugins-iOSフォルダに入れる。
(3)下記画像のように、フレームワークを設定する。
(4)xcodeでのエラー回避
GoogleMobileAds - Editor - AdMobDeperndenciesクラスを開く
56行目あたり iOSの部分をコメントアウトしておく。
#elif UNITY_IOS // Type iosResolver = Google.VersionHandler.FindClass( // "Google.IOSResolver", "Google.IOSResolver"); // if (iosResolver == null) { // return; // } // Google.VersionHandler.InvokeStaticMethod( // iosResolver, "AddPod", // new object[] { "Google-Mobile-Ads-SDK" }, // namedArgs: new Dictionary<string, object>() { // { "version", "7.13+" } // });
スクリプト
※IDは適宜設定すること。
using UnityEngine; using System.Collections; using GoogleMobileAds.Api; public class AdMobManager : MonoBehaviour { static public AdMobManager instance; private string android_BannerID; private string android_InterstitialID; private string iOS_BannerID; private string iOS_InterstitianID; private string deviceID1; private string deviceID2; private string deviceID3; private string deviceID4; private BannerView bannerView; private InterstitialAd interstitialAd; bool show; void Awake () { //シングルトン処理 if (instance == null) { instance = this; DontDestroyOnLoad (this.gameObject); } else { Destroy (this.gameObject); } //パブリッシャーIDと実機デバイスID android_BannerID = "ca-app-pub-xxxxxx"; android_InterstitialID = "ca-app-pub-xxxxx"; iOS_BannerID = "ca-app-pub-xxxxx"; iOS_InterstitianID = "ca-app-pub-xxxxx"; deviceID1 = "xxxxx"; deviceID2 = "xxxxx"; deviceID3 = "xxxxx"; deviceID4 = "xxxxx"; } public void RequestBanner () { #if UNITY_ANDROID string adUnitId = android_BannerID; #elif UNITY_IPHONE string adUnitId = iOS_BannerID; #else string adUnitId = "unexpected_platform"; #endif bannerView = new BannerView (adUnitId, AdSize.SmartBanner, AdPosition.Top); AdRequest request = new AdRequest.Builder () .AddTestDevice (AdRequest.TestDeviceSimulator) .AddTestDevice (deviceID1) .AddTestDevice (deviceID2) .AddTestDevice (deviceID3) .AddTestDevice (deviceID4) .Build (); bannerView.LoadAd (request); } public void DestroyBanner () { bannerView.Destroy (); } public void RequestInterstitial () { #if UNITY_ANDROID string adUnitId = android_InterstitialID; #elif UNITY_IPHONE string adUnitId = iOS_InterstitianID; #else string adUnitId = "unexpected_platform"; #endif interstitialAd = new InterstitialAd (adUnitId); AdRequest request = new AdRequest.Builder () .AddTestDevice (AdRequest.TestDeviceSimulator) .AddTestDevice (deviceID1) .AddTestDevice (deviceID2) .AddTestDevice (deviceID3) .AddTestDevice (deviceID4) .Build (); interstitialAd.OnAdClosed += InterstitialAd_OnAdClosed; interstitialAd.LoadAd (request); } public void viewInterstitial () { show = true; } void OnGUI () { if (show) { if (interstitialAd.IsLoaded ()) { show = false; interstitialAd.Show (); } } } void InterstitialAd_OnAdClosed (object sender, System.EventArgs e) { DestroyInterstitial (); } public void DestroyInterstitial () { show = false; interstitialAd.Destroy (); RequestInterstitial (); } }
AdMob用のゲームオブジェクトを作成し、スクリプトをアタッチする。
インタースティシャルのリクエスト
読み込みに時間がかかるので、リクエストだけスプラッシュ画面でやっとく。
インタースティシャル広告が閉じられた時に、広告を破棄してリクエストを開始するようにしてあるので、読み込むのは最初のシーンだけでOK。
シングルトンクラスにしてあるので、読み込んだ広告は、シーンをまたいで保持してくれる。
using UnityEngine; using System.Collections; public class Splash : MonoBehaviour { void Start () { AdMobManager.instance.RequestInterstitial (); } }
インタースティシャルの表示
任意のタイミングで下記を実行。
AdMobManager.instance.viewInterstitial ();
バナーの読み込みと表示
バナーは読み込んだら即時表示させる。
任意のタイミングで下記を実行。
AdMobManager.instance.RequestBanner ();
バナーはスマートバナーでTopに固定してます。
AdMobManager内にあるスクリプトで適宜変更してください。
//AdMobManager 変更箇所 bannerView = new BannerView (adUnitId, AdSize.SmartBanner, AdPosition.Top);
以上。