AdMobのプラグインを入れてコードも追加したのに、広告が表示されない。そんなときは、設定をまとめて変更する前に「コードが動いているか」「読み込みが成功したか」「表示した広告をすぐ消していないか」の順で確認すると、調べる場所を絞れます。
この記事は、UnityでAdMobを設定する導入記事にあるAndroidの固定サイズバナーを前提にした、切り分け用のガイドです。
1. 最初に「どこまで動いたか」を分ける
広告が見えないだけでは、原因は決められません。次の表を上からたどり、現在の状態に合う箇所を確認します。この順番は、本記事で提案する調査手順です。
| 確認できたこと | 次に調べる場所 |
|---|---|
| ビルドが完了しない・アプリが起動しない | ビルドログ、SDKの重複、Android依存ライブラリ、アプリIDの設定 |
| アプリは起動するが、自分で入れた開始ログが出ない | 実行シーン、GameObjectとコンポーネントの有効状態、プラットフォーム分岐 |
| SDKの初期化までは進むが、広告リクエストが出ない | 初期化後の呼び出し、同意取得の状態、処理途中の例外 |
| 読み込み失敗のログが出る | エラーのdomain・code・message、通信、IDと広告形式 |
| 読み込み成功のログは出るが、画面に見えない | HideやDestroyの呼び出し、シーン切替、バナーの位置とサイズ |
| 公式のテスト広告は出るが、自分の広告ユニットは出ない | テストデバイス設定と、AdMob側のアプリ・広告ユニットの状態 |
設定を1つ変更したら再確認し、変更前後のログを残します。複数箇所を同時に変えると、どの修正が効いたのか分からなくなります。
2. Android用の「アプリID」と「広告ユニットID」を照合する
この2つは入力場所が異なります。導入記事と同じテスト構成に戻す場合は、次の組み合わせを確認します。
| 用途 | Androidのテスト用ID |
|---|---|
| UnityのGoogle Mobile Ads設定に入れるアプリID | ca-app-pub-3940256099942544~3347511713 |
| 固定サイズバナーのコードに入れる広告ユニットID | ca-app-pub-3940256099942544/6300978111 |
アプリIDは~、広告ユニットIDは/を含みます。AndroidでiOS用のIDを使ったり、バナーでインタースティシャル用のIDを使ったりしていないかも確認します。バナー用IDは、公式の「テスト広告」の形式別一覧と照合してください。公式:テスト広告、公式:Android導入ガイドのサンプルアプリID

Googleが用意したテスト広告ユニットは、自分のAdMobアカウントに紐付きません。そのため、まず公式のテストIDで確認し、その後に自分の広告ユニットでの確認へ進むと、調査対象を分けやすくなります。公式:テスト広告の仕組み
3. 実行シーンとスクリプトを確認する
Hierarchyに広告用のGameObjectがあり、対象スクリプトが付いているか確認します。別のシーンだけに置いている場合や、GameObject・コンポーネントが無効の場合は、そのスクリプトの開始処理へ進めません。

導入記事のコードは、Android端末での確認を目的にしています。UNITY_ANDROIDなどの条件付きコンパイルがある場合は、Windows向けのEditor実行とAndroidビルドで通る処理が異なります。コードが出すプラットフォームに関するログも読みます。
Google Mobile Ads Unity PluginにはEditor用の模擬広告がありますが、実機の通信・Android依存ライブラリ・実際の広告表示まで確認できるものではありません。公式では、Editorの模擬広告はGUIの下に表示される点も案内されています。公式:Unity Editorでのテスト
4. 読み込み失敗のログを残す
広告リクエストの前に失敗イベントを登録しておくと、表示されない理由を調べやすくなります。すでに失敗イベントを登録している場合は、その処理に診断情報を追加します。
以下は、既存のBannerView変数bannerViewに対して使う実機未検証の診断用断片です。単独では実行できません。
bannerView.OnBannerAdLoadFailed += error =>
{
Debug.LogError(
"AdMob load failed: " + error.ToString());
var response = error.GetResponseInfo();
if (response != null)
{
Debug.Log("AdMob response: " + response.ToString());
}
};
LoadAdErrorには、domain・code・messageなどの情報があります。エラー番号だけで原因を決めず、OSとdomain、メッセージを合わせて確認します。 この断片はログを出す処理だけです。失敗イベントからUnityのUIやGameObjectを操作する場合は、メインスレッドで処理する必要があります。公式:広告読み込みエラー、公式:Unityオブジェクトとコールバック
ログに合わせた確認例
- 形式やプラットフォームの不一致:固定サイズバナーのAndroid用IDを使っているか照合します。
- 通信に関するエラー:端末の接続を確認し、接続先やネットワークを変えたときに結果が変わるか記録します。
- 自分の広告ユニットの承認・配信に関するメッセージ:AdMobのアプリ状態やポリシーセンターを確認します。
- 読み込みイベントが出ない:
LoadAd()まで到達したか、直前の例外や同意取得の処理を確認します。
同意取得の処理で広告リクエストまで進まない場合は、UMPの同意取得を実装する方法で起動時の順序を確認してください。
承認や広告形式などのメッセージは公式ヘルプで照合できます。すべての表示失敗を「審査待ち」と判断して待つのは避け、実際のメッセージに沿って対応します。公式:オンボーディングの一般的な問題
5. Androidのビルドエラーは、広告の読み込みと分けて調べる
APKやAABを作成できない場合は、まずビルドログに出た最初の具体的なエラーを確認します。Unityのビルド失敗と、起動後の広告読み込み失敗では、調べる場所が異なります。

SDKを.unitypackageとUPMの両方から追加していると、同じプラグインや依存ライブラリが重複する場合があります。導入方法を切り替えた履歴がある場合は、公式の移行手順と実際のファイルを照合します。ログを読まずにプラグインのフォルダやGradle設定をまとめて削除せず、変更前にプロジェクトを保存します。公式:導入方法の切り替え
6. 読み込み成功後に見えない場合
OnBannerAdLoadedが出たら、その後の表示処理と破棄処理を確認します。
- 読み込み直後に
Hide()やDestroy()を呼んでいないか。 - シーン切替で広告用オブジェクトが破棄され、
OnDestroy()でバナーも破棄されていないか。 - 新しいバナーを作る処理と古いバナーを破棄する処理が重なっていないか。
- バナーのサイズと配置が表示先に合っているか。
Googleは、バナーがAndroid側のレイアウトに対して大きすぎる場合、表示されずエラーが記録されることを案内しています。まず導入記事と同じAdSize.Bannerと標準の位置指定で確認し、独自のサイズ・座標はその後に調べます。公式:バナーのサイズとライフサイクル
7. 自分の広告ユニットを確認する段階では
公式のテスト広告が表示できたら、自分の広告ユニットを使う確認へ進みます。その際は端末をテストデバイスに設定します。Googleのテスト広告は収益確認用ではなく、導入・動作確認用です。公式:テストデバイスの設定
詳細な調査にはAd inspectorも使えます。AdMobアカウント・アプリの設定などが必要で、起動できるのはテストデバイスです。初回の固定サイズバナーの切り分けを終えてから、広告ユニットやメディエーションの診断に使います。公式:Ad inspector
テストバナーが表示できたことと、公開に必要な設定が揃ったことは、それぞれ確認します。本番配信に向けて開発者サイト側の設定も準備する場合は、app-ads.txtの設定を参照してください。
まとめ
テスト広告が出ないときは、開始処理、ID、初期化、読み込みログ、表示・破棄の順で確認します。エラーを記録してから1箇所ずつ変更すると、原因を絞りやすくなります。
次の情報があれば、他の人にも状況を伝えやすくなります。
- UnityとGoogle Mobile Ads Unity Pluginのバージョン
- Androidのビルド・端末で確認したか
- 使用したIDの種類と広告形式
- SDK初期化、広告リクエスト、読み込み結果のログ
- 直前に変更した設定と、その前後の結果
ログを共有するときは、テスト端末の識別子など公開不要な情報を取り除きます。
参考コードのライセンス:Apache 2.0。
