AdMobのバナー広告(bannerView)がシーン切替後も消えない

Unity

先日リリースしたAndroid用ゲームで、画面上部に設置したAdMobのバナー広告(bannerView)表示の不具合がありました。

本来は、バナー広告が表示されるのはタイトル画面のみで、他のシーンへ移動するボタンを押した際に下記コードを使い bannerView を破棄/削除するようにしていました。

リリース後に実機で確認すると、広告が読み込まれて表示するより前に他のシーンへ移動してしまうと、シーン遷移後に広告の読み込みが完了しバナー広告が表示されてしまう問題が起きていました。

テスト時は広告が表示されるかどうかを確認していたので、表示前のシーン遷移をチェックしていなかったのかもしれません。

ちなみに、この問題の修正時に実機で確認したところ、iOS(iPhone)では起きない現象みたいです。

色々試した結果、対処方法はごくシンプルで下記コードになります。

Android Studioに実機を繋いだ状態でログを見てみると、シーン遷移後に広告の読み込みが完了しているのは同じなのですが、Hideの効果で見えなくなっていました。

隠すだけでは次第に重複して処理が重たくなるんじゃないか?と思い、確認する為に下記のコードを入れてみました。

※ログをフィルタリングできるように、広告関連の Debug.Log の先頭に “ad:” と記述するようにしています。

シーン遷移後に広告の読み込みが完了した(隠れて見えない)状態で、元のタイトル画面に戻ってみました。

正常に広告が表示され、ログでは else if (bannerView == null) の方の結果の、”ad:バナー広告作成前にBannerViewは存在しない” と表示されていました。

この修正を含んだ、アプリのアップデートをしています。

Unity