Unityアプリ開発メモ_

Unityアプリ開発中に役立つメモを残しています。

UnityでのAdmob実装

無料アプリ開発では広告が重要になりますが、まずはGoogleのAdmobを利用します。
以下がUnityでのAdmob実装方法です。

Google公式解説
https://developers.google.com/mobile-ads-sdk/docs/games#unity

プラグインソースコードを追加します。
以下のクラスを作成

AdMobManager.cs

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

public class AdMobManager : MonoBehaviour {
	public string Android_Banner;
	public string Android_Interstitial;
	public string ios_Banner;
	public string ios_Interstitial;

	public static BannerView bannerView;
	public static InterstitialAd interstitial;
	private AdRequest request;
	
	bool is_close_interstitial = false; 
	
	// Use this for initialization
	void Awake () {
		RequestInterstitial ();
		RequestBanner ();
	}
	
	// Update is called once per frame
	void Update () {
		
	}
	//
	public void RequestBanner()
	{
		#if UNITY_ANDROID
		string adUnitId = Android_Banner;
		#elif UNITY_IPHONE
		string adUnitId = ios_Banner;
		#else
		string adUnitId = "unexpected_platform";
		#endif
		
		// Create a 320x50 banner at the top of the screen.
		bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
		// Create an empty ad request.
		request = new AdRequest.Builder()
			.AddTestDevice(AdRequest.TestDeviceSimulator)       // Simulator.
			.AddTestDevice("xxxxxxxxxxxxxx")  // My test Device.
			.Build();

		// Load the banner with the request.
		bannerView.LoadAd(request);
	}
	
	public void RequestInterstitial()
	{
		#if UNITY_ANDROID
		string adUnitId = Android_Interstitial;
		#elif UNITY_IPHONE
		string adUnitId = ios_Interstitial;
		#else
		string adUnitId = "unexpected_platform";
		#endif
		
		if (is_close_interstitial == true) {
		}
		
		// Initialize an InterstitialAd.
		interstitial = new InterstitialAd (adUnitId);
		// Create an empty ad request.
		request = new AdRequest.Builder()
			.AddTestDevice(AdRequest.TestDeviceSimulator)       // Simulator.
				.AddTestDevice("xxxxxxxxxxxxxx")  // My test Device.
				.Build();

		// Load the interstitial with the request.
		interstitial.LoadAd (request);
		interstitial.AdClosed += HandleAdClosed;
		
	}

	//Interstitialの破棄と再読み込み
	void HandleAdClosed (object sender, System.EventArgs e)
	{
		interstitial.Destroy ();
		RequestInterstitial ();
	}
}


あとは広告を表示したい箇所で任意に表示・非表示を切り替え

//バナー表示
AdMobManager.bannerView.Show();
//バナー非表示
AdMobManager.bannerView.Hide();
//全画面広告の表示
AdMobManager.interstitial.Show();


※全画面広告の場合は、表示後ユーザーが消した後バックグラウンドで次の広告をリクエストします。
全画面広告はあまりに高い頻度で表示するのは好まれないため、3~5回に一回にしました。