0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

adMobスクリプトメモ

Last updated at Posted at 2019-08-14

adMobの公式ガイドをそのまま実装してる方の情報ばかりだったので
少しいじったものをメモ。

using System; //リワードで使用
using UnityEngine;
using UnityEngine.UI; //テキスト(テスト用)で使ってるだけ
using GoogleMobileAds.Api; //必須

public class AdMob : MonoBehaviour {

	private enum Adtype {
		banner,
		reward,
		inter,
		native
	}
	[SerializeField]
	private Adtype adtype; //タイプをインスペクタで選べるように

	[SerializeField]
	private string Android_appId = default; //AndroidのappID 「~」がある方
	[SerializeField]
	private string ios_appId = default; //iosのappID
	[SerializeField]
	private string Android_UnitId = default; //AndroidのUnitID 「/」がある方
	[SerializeField]
	private string ios_UnitId = default; //iosのUnitID

	private RewardBasedVideoAd rewardBasedVideo;

	private string appId;
	private string adUnitId;

	public Text text; //テスト用


	void Awake ()
	{
		DontDestroyOnLoad (this); //このスクリプトがアタッチされてるobjは消えない

# if UNITY_ANDROID
		appId = Android_appId;
# elif UNITY_IPHONE
		appId = ios_appId;
# else
		appId = "unexpected_platform";
# endif

# if UNITY_ANDROID
		adUnitId = Android_UnitId;
# elif UNITY_IPHONE
		adUnitId = ios_UnitId;
# else
		adUnitId = "unexpected_platform";
# endif

		MobileAds.Initialize (appId); // Initialize the Google Mobile Ads SDK.

		switch (adtype) { //enumで選んだものが実行される
		case Adtype.banner: RequestBanner (); break;
		case Adtype.reward:
			rewardBasedVideo = RewardBasedVideoAd.Instance; // Get singleton reward based video ad reference.
			rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // Called when the ad is closed.
			RequestRewardBasedVideo (); break;
		case Adtype.inter: break; //未設定
		case Adtype.native: break; //未設定
		}
	}

	private void RequestBanner () //バナーの命令
	{
		BannerView bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Top); // Create a 320x50 banner at the top of the screen.

		AdRequest bannerrequest = new AdRequest.Builder ().Build (); // Create an empty ad request.

		bannerView.LoadAd (bannerrequest); // Load the banner with the request.
	}

	private void RequestRewardBasedVideo () //リワードの命令
	{
		AdRequest rewardrequest = new AdRequest.Builder ().Build (); // Create an empty ad request.

		rewardBasedVideo.LoadAd (rewardrequest, adUnitId); // Load the rewarded video ad with the request.
	}


	public void HandleRewardBasedVideoClosed (object sender, EventArgs args)
	{
		RequestRewardBasedVideo (); //広告を再び再生できるようにリセット
		text.text += "成功!!"; //広告を閉じた時に実行される命令(テスト用)
		MonoBehaviour.print ("HandleRewardBasedVideoClosed event received");
	}

	public void testButton () //ボタン命令(テスト用)
	{
		if (rewardBasedVideo.IsLoaded ()) { //ロード完了してたら
			rewardBasedVideo.Show (); //リワード動画を表示
		}
	}

}


インスペクタでIDを入れられるようにして
enumがついてるのでプルダウンメニューから
バナーなのかリワードなのか選べるようにしました。
(バナーリワード以外は今の所作ってません)

あとはボタンを押したらリワードが出るようにしてるので
UIボタンにtestButtonをアタッチすれば
ボタンを押した時(ロードしきってれば)再生されます。
ロードしきったらボタンが押せるようにするのが一番いいかも。

広告を閉じる命令で
text.text += "成功!!";
が発生してるのでここを任意のものにすれば
わりといろいろできる気がする。

と、まぁなんとなく出来たことをメモしただけですが
自分的に整理されたので一応メモっておきますー。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?