見出し画像

【Unity】Unityの画面では表示される広告が実機テストでは出ないときの対処法

どうもマカロンです。

今回は先日初めてAdmobのリワード広告を実装したのですが、その時にバナーのテスト広告は出るのにリワード広告とインタースティシャル広告が出ないということが発生したので今回はそれを解決する方法についてか行きたいと思います。ではさっそく行きましょう!


Unity上で広告が出ているかの確認

キャプチャ

まず最新版のAdmob広告のSDKではUnity画面上でAdmob広告の表示を確認することが出来ます。ですが、一つ注意するべきポイントがあってこの広告は実際に広告を読み込んでいるわけではなくて、広告が表示されるべきタイミングであらかじめプロジェクト内に保存されている画像の広告が表示されるだけです。


キャプチャ

これはGoogleMobileAdsのフォルダ内にて確認することが出来ます。

このUnity上の画面で広告が表示されていない場合は他の方たちが上げているやり方などを試して対処してみてください。


Unity上で表示されたのに実機で出ない

ここからが本題です。

Unity上で表示されたにも関わらず、肝心な実機で表示されない場合があります。そしてこれの原因は広告の取得に失敗していることがほとんどです。

Unity上では上記にも記載した通り、表示されるべきタイミングでフォルダ内の画像を表示しているだけなので大丈夫なのですが実機の場合は実際にテスト広告にアクセスをかけて表示を行うので表示するまで時間がかかります。

要するに広告の取得が終わっていないのにも関わらず、先に表示処理を行っている可能性がある、ということです。


解決方法

ここでAdmob公式リファレンス(ここではリワード広告が例)を見てみましょう。

キャプチャ

利用できるイベントの中にOnAdLoadedというものがあります。

これは広告の読み込みが完了してから処理を行うのでこの関数の中に表示処理を書けばいいのです。

    //=================================
   //リワード広告表示
   //=================================
   private void RequestReward()
   {
#if UNITY_IOS && !UNITY_EDITOR
       adUnitId = "ca-app-pub-3940256099942544/1712485313";
#endif
       // Android設定
#if UNITY_ANDROID || UNITY_EDITOR
       adUnitId = "ca-app-pub-3940256099942544/1712485313";
#endif

       this.rewardedAd = new RewardedAd(adUnitId);
       this.rewardedAd.OnAdLoaded += HandleRewardBasedVideoLoaded;

       AdRequest request = new AdRequest.Builder().AddTestDevice(SystemInfo.deviceUniqueIdentifier).Build();
       this.rewardedAd.LoadAd(request);
   }
   //=================================
   //リワード広告が読み込まれたら実行
   //=================================
   public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
   {
       rewardedAd.Show();
   }

RequestReward()を好きなタイミングで呼び出せば正常に表示されるかと思います。

またこのコードの細々としたところを説明すると

iOSとAndroidで広告idをあらかじめ分けておく
・実際表示する広告idはUNITY_IOS、UNITY_ANDROIDでことなると思うのであらかじめ分けておきます。ここではテスト広告を表示するだけなのでidは同じになっていますが、実際はそれぞれが生成したidを入れます。

AddTestDevice(SystemInfo.deviceUniqueIdentifier)
AdRequestの書き方はAdRequest.Builder().Build()がデフォルトですがAdRequest.Builder().AddTestDevice(SystemInfo.deviceUniqueIdentifier).Build();と書くことで自信のadmobのidをテストデバイスとして登録することが出来ます。これはやっておいた方がいいです。

・参考URL
https://baba-s.hatenablog.com/entry/2019/08/23/190000


最後に

admob広告実装は簡単なのですが、反映までが時間がかかったりそもそも反映されるまでの手順が複雑だったり、前は設定しなくてよかったものを設定しなくてはならなくなったりとめんどいことが多いです。

UnityAdsの方が良いのかな…とか思い始めてますがもうしばらくはAdmobで頑張っていこうかと思います。

この記事が参加している募集

最近の学び

ゲームを作るにはやはりお金がないとできることが限られてしまいます。なのでよろしければどうか支援してくださるとうれしいです