Unity AdMob(9.1.1)広告ユニット実装例

バナー広告

バナーは、リクエスト送信してロードされるとすぐ表示されるので
すぐにHideして非表示にしています。
そして表示したいタイミングでShow、非表示にしたいタイミングでHideします。

public void RequestBanner(){
		
		if (bannerView == null)
		{

			string adUnitId = bannerId;

			// Create a 320x50 banner at the top of the screen.
			bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

			// create our request used to load the ad.
			var adRequest = new AdRequest();

			bannerView.OnBannerAdLoadFailed += (LoadAdError error) => {
				//読み込み失敗したのでクリーンアップして再読み込みする
				bannerView.Destroy();
				bannerView = null;
			};

			// send the request to load the ad.
			bannerView.LoadAd(adRequest);
			bannerView.Hide();

		}
		else
		{
			bannerView.Show();

		}

	}

インタースティシャル広告

インタースティシャルは、実際に表示するよりも前にリクエストしてロードしておきます。
広告を表示した後は、リクエストしてロードするようイベントを仕込みます。

private void RequestInterstitial(){

		//広告読み込み済みなら中断
		if (interstitial != null)
		{
			if (interstitial.CanShowAd()) return;
		}

		string adUnitId = interstitialId;

		if (interstitial != null)
		{
			interstitial.Destroy();
			interstitial = null;
		}

		// create our request used to load the ad.
		var adRequest = new AdRequest();

		// send the request to load the ad.
		InterstitialAd.Load(adUnitId, adRequest,
			(InterstitialAd ad, LoadAdError error) =>
			{
				// if error is not null, the load request failed.
				if (error != null || ad == null)
				{
					Debug.LogError("interstitial ad failed to load an ad " +
								   "with error : " + error);
					return;
				}

				Debug.Log("Interstitial ad loaded with response : "
						  + ad.GetResponseInfo());

				interstitial = ad;
				//インタースティシャルのイベント登録
				RegisterReloadHandler(interstitial);
			});

	}

	private void InterstitialReload()
	{
		//クリーンアップして再読み込み
		if (interstitial != null) interstitial.Destroy();
		interstitial = null;

		RequestInterstitial();		
	}

	private void RegisterReloadHandler(InterstitialAd interstitialAd)
	{
		// Raised when the ad closed full screen content.
		interstitialAd.OnAdFullScreenContentClosed += () =>
		{
			// Reload the ad so that we can show another as soon as possible.
			InterstitialReload();
		};
		// Raised when the ad failed to open full screen content.
		interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
		{
			// Reload the ad so that we can show another as soon as possible.
			InterstitialReload();
		};
	}

	public void AdMobInterStitialShow(){

		if(interstitial != null)
                {
			if (interstitial.CanShowAd())
			{
                                interstitial.Show();				
			}
			else
			{
				RequestInterstitial();
			}
		}
		else
		{
			RequestInterstitial();
		}
	}

リワード広告

これはゲームクリア時のコイン報酬をリワード広告を再生することによって倍増させるサンプルです。
RequestCoinRewardをゲームスタート時に事前に呼び出してロードしておきます。
ゲームクリア時にWatchCoinRewardAdをユーザーが再生ボタンを押すことで呼び出して
正常にリワード広告を見終わったら、コルーチンRewardCoinBonusが呼ばれるようになっています。
コルーチンにしているのは、広告再生後、1フレーム待たないと報酬が付与されない事があったため。

public void RequestCoinReward()
	{
		//広告読み込み済みなら中断
		if (rewardedCoinAd != null)
		{
			if (rewardedCoinAd.CanShowAd()) return;
		}

		if (rewardedCoinAd != null)
		{
			rewardedCoinAd.Destroy();
			rewardedCoinAd = null;
		}

		// create our request used to load the ad.
		var adRequest = new AdRequest();

		// send the request to load the ad.
		RewardedAd.Load(adUnitId, adRequest,
			(RewardedAd ad, LoadAdError error) =>
			{
				// if error is not null, the load request failed.
				if (error != null || ad == null)
				{
					Debug.LogError("Rewarded ad failed to load an ad " +
								   "with error : " + error);
					return;
				}

				Debug.Log("Rewarded ad loaded with response : "
						  + ad.GetResponseInfo());

				rewardedCoinAd = ad;
			});

	}

public void WatchCoinRewardAd()
	{
		if(rewardedCoinAd == null)
                {
			//リワード報酬付与失敗の処理
			
		}else if (rewardedCoinAd.CanShowAd())
		{
			rewardedCoinAd.Show((Reward reward) =>
			{
				//リワード報酬付与の処理
				StartCoroutine(RewardCoinBonus());
			});

		}
		else
		{
			//リワード報酬付与失敗の処理			
		}
	}

private IEnumerator RewardCoinBonus()
    {
        //1フレーム待たないと正しく報酬付与されないので待つ
		yield return new WaitForEndOfFrame();

		//クリア報酬倍増の処理
		報酬を倍にする処理を書く

		//広告内容破棄してクリーンアップ
		rewardedCoinAd.Destroy();
		rewardedCoinAd = null;

                //次のリワード広告準備のためにリクエスト
                RequestCoinReward()

	}

以上です。

コメント

タイトルとURLをコピーしました