AdMob管理クラス作った
こんにちは。
昨日プライバシーポリシー違反的な奴で
Googleに公開していたアプリが全滅してアタフタしました。。。
今回はGoogleAdMobを実機に搭載する際、
共通化したクラスで管理すると楽そうなので作ってみました。
※追記 2019/06/05
ver17.以降は必要な処理が増えたのでまとめたリンクを貼っておきます
GoogleAdMobインポート後に必要な作業 ※ver.17以降 - のにっき
クラス内容
/*********************************************************** クラス名 : GoogleAds 概要 : 広告管理クラス ***********************************************************/ public class GoogleAds { //=============================== // 変数定義 //=============================== // テスト用 //string appId = "ca-app-pub-3940256099942544~3347511713"; //string adUnitId = "ca-app-pub-3940256099942544/6300978111"; //string adUnitId_Pnl = "ca-app-pub-3940256099942544/1033173712"; // 本番用 string appId = "ここに取得したIDを設定"; // アプリID string adUnitId_Bnr = "ここに取得したIDを設定"; // 【バナー】広告ID string adUnitId_Pnl = "ここに取得したIDを設定"; // 【インスタンス】アプリID // 変数 BannerView bannerView; AdRequest request; InterstitialAd interstitial; /*********************************************************** コントラクタ : GoogleAds ***********************************************************/ public GoogleAds() { MobileAds.Initialize(appId); bannerView = new BannerView(adUnitId_Bnr, AdSize.SmartBanner, AdPosition.Bottom); request = new AdRequest.Builder().Build(); bannerView.LoadAd(request); interstitial = new InterstitialAd(adUnitId_Pnl); } /*********************************************************** メソッド : SetBanner_ 概要 : バナー表示・非表示処理 ***********************************************************/ //******************************************************** // バナー表示 //******************************************************** public void SetBanner_On() { bannerView.Show(); } //******************************************************** // バナー非表示 //******************************************************** public void SetBanner_Off() { bannerView.Hide(); } /*********************************************************** メソッド : SetPanel_On 概要 : インスタンス表示処理 ***********************************************************/ public void SetPanel_On() { //-------------------------------------------------------- // 広告出力処理 //-------------------------------------------------------- AdRequest request = new AdRequest.Builder().Build(); interstitial.LoadAd(request); //-------------------------------------------------------- // 広告関係のイベント追加 ※固有の処理があったら記入 //-------------------------------------------------------- // 広告が表示可能になったとき interstitial.OnAdLoaded += (handler, EventArgs) => { interstitial.Show(); }; // 広告が閉じられたとき interstitial.OnAdClosed += (handler, EventArgs) => { interstitial.Destroy(); }; // 広告がエラーになったとき interstitial.OnAdFailedToLoad += (handler, EventArgs) => { interstitial.Destroy(); }; } }
使い方例
1.シーンに影響しないスプリクトに下記のようにクラスを定義しておく
public static GoogleAds Cls_Add = null;
2.広告を表示したいシーンのどこかのオブジェクトに
下記のスプリクトを設定する
【例】Title_AdCntrl という名のスプリクトを作成
仕様:ゲーム起動時にバナー広告を液晶下部に表示
タイトル画面に戻るたびに、ランダムでインスタンス広告を表示する
public class Title_AdCntrl : MonoBehaviour { void Start() { //======================================================= // 広告表示 //======================================================= // 初回起動判定 if (Cmn.Cls_Add == null) { Cmn.Cls_Add = new Cmn.GoogleAds(); Cmn.Cls_Add.SetBanner_On(); return; } //======================================================= // 2回目以降はインスタンス表示抽せん //======================================================= int i_Ransu = 0; int i_seed = 0; System.Random rnd_Ransuu; i_seed = Environment.TickCount + (int)DateTime.Now.Ticks; rnd_Ransuu = new System.Random(i_seed); i_Ransu = rnd_Ransuu.Next(100); if (i_Ransu < 66) { // インスタンス表示 Cmn.Cls_Add.SetPanel_On(); } } }
以上です。
インスタンス広告が閉じられた時にシーンを移動したい!等の
機種固有の処理があれば、クラス内の
「interstitial.OnAdClosed += (handler, EventArgs) =>」
の中身に記入したりと拡張も分かりやすくできるかなと思います。
一行分のコードが長いと勝手に改行されるのはどうにかできるのでしょうか?
「はてな記法 勝手に改行」等で調べても分からないので困ってます・・・