げんとめブログ

AdMobの表示回数が少なかった話

全画面広告

AdMobを使ってるんですが、どうにも表示回数が少なかったんです。 リクエストのわりにそこまで表示されてないなと。 なんでかなと思ったら広告の読み込みに失敗したときそのままにしてたからっぽくて。 OnAdLoadFailedのイベントハンドラに、広告を読み直す処理を入れたらちゃんと表示されるようになりました。 あと再表示するときは一度Destroyを呼び出して再度生成する必要があります。OnAdClosedのイベントで処理してます。 下のスクリプトはフリーのアセット使用してますのでインポートしないと使えないです。時間をおく処理に使ってるだけですが。 UniRx - Reactive Extensions for Unity AdMobのSDKは公式からDLをどうぞ。
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UniRx;//アセット使用
using GoogleMobileAds.Api;

    public class InterstitialAdAsset : MonoBehaviour
    {
        public string INTERSTITIAL_ID = "";//アプリごとに設定
        const string TEST_ID_INTERSTITIAL = "ca-app-pub-3940256099942544/1033173712";
        protected InterstitialAd _interstitialAd;
        public InterstitialAd Interstitial { get => _interstitialAd; }
        // Start is called before the first frame update
        public override void Start()
        {

            SetId();
            AdRequest();
            _interstitialAd.OnAdFailedToLoad += OnAdLoadFailed;
            _interstitialAd.OnAdClosed += this.OnAdClosed;
        }

        /// 
        public virtual void InterstitialShow()
        {
            if (_interstitialAd.IsLoaded())
            {
                _interstitialAd.Show();
            }
        }

        /// 
        /// 
        /// 
        protected virtual void OnAdLoadFailed(object sender,AdFailedToLoadEventArgs args)
        {
            if(Application.internetReachability == NetworkReachability.NotReachable)//ネットにつながっていない
            {
                return;
            }
            Observable
                .Timer(TimeSpan.FromMilliseconds(3000))
                .Subscribe(_ =>
                {
                    _interstitialAd.Destroy();
                    AdRequest();
                });
        }
        /// 
        /// 
        /// 
        protected virtual void OnAdClosed(object sender, EventArgs args)
        {
            _interstitialAd.Destroy();
            AdRequest();
        }
        protected virtual void AdRequest()
        {
            _interstitialAd = 
              new GoogleMobileAds.Api.InterstitialAd("INTERSTITIAL_ID"/*使うID*/);
            _interstitialAd.LoadAd(AdRequest.Builder().Build());
        }
    
    }
バナーでもOnAdLoadTofailedのイベントがありますので同じようにできるかと。あと、広告を登録したばかりだと表示されないこともあるみたいです。時間を置いたら(1日、2日くらい?)表示されるという話をちらほら見ます。ネットで。 ゆうても、たくさんの人にプレイされなかったらどうしようもないんですけ……ど!!
Exit mobile version