スポンサーリンク
エラー・トラブルシューティング

UnityでAdMob広告が表示されない原因まとめ|テスト広告・実機・本番広告のチェックリスト

エラー・トラブルシューティング

UnityでAdMob広告を実装したのに、なぜか広告が表示されない…。
この問題、かなり多いです。

しかも厄介なのが、症状によって原因がまったく違うことなんですよね。

  • Unity Editorでは動いているのに実機で出ない
  • バナー広告は出るのにRewardedAdだけ失敗する
  • テスト広告は出るのに本番広告だけ表示されない
  • 「No Fill」と出るけど、コードミスなのか分からない

こんな状態になると、「全部実装し直したほうが早いのでは…?」という気持ちになりがちです🙂

でも実際は、原因を順番に切り分けていくと、かなり高い確率で解決できます。

私自身もUnityで広告実装をしていると、コード側ではなく「AdMob設定」「Bundle ID」「テストデバイス設定」「広告在庫」など、Unity以外の部分でハマることがよくあります。

特に初心者のうちは、「広告が表示されない=コードが壊れている」と思いやすいのですが、実はそうとは限りません。

広告表示まわりは、ざっくり分けると次の4段階で問題が起きます。

  • SDK導入・初期化の問題
  • テスト広告設定の問題
  • 実機・ビルド環境の問題
  • AdMob側(No Fill・審査・同意管理など)の問題

ここを混ぜて考えると、原因が見えなくなりやすいんです。

逆に言うと、「どの段階で止まっているか」を判断できれば、かなりスムーズに直せます。

今回は、UnityでAdMob広告が表示されない時によくある原因を、症状別に整理しながら確認していきます。


  1. Unity AdMob広告が出ない時の結論
    1. 最初に確認したい判断基準
    2. まずやらなくていいこと
  2. AdMob基本設定の確認
    1. AdMobアプリIDを確認する
    2. SDK初期化の順番を確認する
    3. Android Resolverを確認する
  3. テスト広告が表示されない原因
    1. サンプル広告ユニットIDを使う
    2. テストデバイス登録を確認する
    3. テスト広告が出ない時の判断基準
    4. よくある失敗例
  4. 実機でAdMob広告が出ない原因
    1. Bundle IDとPackage Nameを確認する
    2. LogcatやXcodeログを確認する
    3. ビルド後だけ動かない場合を確認する
    4. 3分チェックリスト
  5. No Fillと本番広告の違い
    1. No Fillは広告在庫不足の可能性が高い
    2. 本番広告だけ出ない時の確認項目
    3. やるべきことと、やらなくていいこと
    4. Ad Inspectorで確認する
  6. RewardedAdが表示されない原因
    1. CanShowAdで表示可能か確認する
    2. 広告は1回表示ごとに再ロードする
    3. 報酬付与コールバックを確認する
    4. UI更新やシーン遷移を詰め込みすぎない
    5. よくある失敗例
  7. よくある誤解と注意点
    1. No Fillは必ず実装ミスではない
    2. Unity Editorだけで判断しない
    3. 本番広告を自分でクリックしない
    4. UMPやapp-ads.txtは別問題として考える
    5. SDKバージョン差異にも注意する
  8. Unity AdMob広告が出ない時のまとめ
    1. まず確認したい順番
    2. RewardedAdはゲーム設計も影響する
    3. ログ確認が最短ルートになることが多い
  9. よくある質問(FAQ)
    1. 関連記事:

Unity AdMob広告が出ない時の結論

最初に結論から言うと、UnityでAdMob広告が表示されない原因は、だいたい次の5つに絞られます。

  1. AdMobアプリID・広告ユニットIDが間違っている
  2. MobileAds.Initialize() の前に広告をロードしている
  3. テスト広告設定が不足している
  4. Bundle ID(Package Name)が一致していない
  5. No Fill・審査・同意管理などAdMob側の問題

特に初心者のうちは、「コードを書いた=すぐ広告が出る」と思いやすいのですが、実際にはUnity側だけでなく、AdMob管理画面や実機環境も関係してきます。

なので、まずは「どの段階で止まっているのか」を切り分けるのが大切です。

最初に確認したい判断基準

症状疑うポイント
テスト広告も出ないSDK導入・初期化・ID設定
テスト広告は出る実装はかなり正常寄り
本番広告だけ出ないNo Fill・審査・同意管理
実機だけ失敗するBundle ID・Resolver・ビルド環境
RewardedAdだけ失敗するロード状態・コールバック処理

ここでかなり重要なのが、「テスト広告が出るかどうか」です。

もしGoogle公式のサンプル広告ユニットIDで広告が表示されるなら、SDK導入や基本実装は通っている可能性が高いです。

逆に、テスト広告すら表示されない場合は、AdMob以前に初期化や依存関係で止まっているケースが多いですね。

私も最初の頃は、No Fillなのにコードを書き換え続けて、逆に原因を増やしてしまったことがあります…。
広告実装は「修正量」より「切り分け」が大事です。

まずやらなくていいこと

広告が表示されない時、焦って全部やり直したくなるのですが、次の行動はあまりおすすめしません。

  • コードを全部書き換える
  • 別SDKへ乗り換える
  • 本番広告を自分で何度もクリックする
  • エラーを見ずに設定を触り続ける

特に本番広告クリックは、AdMobポリシー的にも危険です。

まずは、

  • テスト広告が出るか
  • Logcatに何が出ているか
  • LoadAdErrorの内容は何か
  • Bundle IDが一致しているか

この4つを落ち着いて確認するだけで、かなり原因を絞れます。




AdMob基本設定の確認

テスト広告すら表示されない場合は、まずUnity側の基本設定を確認していきましょう。

ここでのポイントは、「広告表示処理そのもの」より前の段階で止まっていないかを見ることです。

特に多いのが、

  • アプリIDと広告ユニットIDの混同
  • SDK初期化の順番ミス
  • Android Resolver未実行

この3つですね。

AdMobアプリIDを確認する

まず最優先で確認したいのが、AdMobアプリIDです。

Unityでは、メニューの以下から設定できます。

Assets → Google Mobile Ads → Settings

ここでAndroid用・iOS用それぞれのAdMobアプリIDを設定します。

ただ、初心者のうちはここでかなり混乱しやすいです。

理由は、AdMobのIDが全部似ているからなんですよね。

  • アプリID → ca-app-pub-xxxxxxxx~yyyyyyyy
  • 広告ユニットID → ca-app-pub-xxxxxxxx/yyyyyyyy

見た目がそっくりなので、広告ユニットIDを設定欄に入れてしまうケースが本当に多いです。

「~(チルダ)」が入っているのがアプリID、と覚えると少し分かりやすいです。

もしここを間違えると、広告ロード以前にSDK初期化で問題が起きやすくなります。

SDK初期化の順番を確認する

次に確認したいのが、MobileAds.Initialize() を呼ぶタイミングです。

AdMobでは、広告ロード前にSDK初期化が必要です。

よくある失敗例はこちらです。

// NG例
LoadAd();
MobileAds.Initialize(...);

これだと、SDK準備前に広告ロードが始まってしまいます。

基本的には、アプリ起動時に一度だけ初期化する形がおすすめです。

// OK例
MobileAds.Initialize((InitializationStatus status) =>
{
    LoadAd();
});

特にChatGPT生成コードや動画教材を組み合わせて実装した場合、初期化順がバラバラになっていることがあります。

「コードは全部あるのに出ない」という時は、この順番をかなり疑います。

Android Resolverを確認する

Android実機だけ広告が出ない場合は、依存関係の問題もかなり多いです。

UnityのAdMobプラグインは、内部でGoogle Play ServicesなどのAndroidライブラリを使っています。

そのため、必要ライブラリが解決されていないと、ビルドは通っても実機で失敗することがあります。

確認する場所はこちらです。

Assets → External Dependency Manager → Android Resolver → Resolve

これを実行すると、必要な依存関係を自動解決してくれます。

もしGradle系エラーが出ている場合は、広告コードではなく、Androidビルド環境が原因の可能性もあります。

特にUnityをアップデートした直後や、複数SDKを導入した後は、Resolver周りが壊れやすい印象があります。

私も「昨日まで動いていたのに急に広告が出ない」という時、Resolver再実行だけで直ったことが何度もあります🙂




テスト広告が表示されない原因

AdMob実装で最初につまずきやすいのが、「テスト広告すら表示されない」状態です。

ここで重要なのは、いきなり本番広告で確認しないことです。

まずはGoogle公式のテスト広告で、SDK導入と広告ロードが正常に動いているかを確認しましょう。

サンプル広告ユニットIDを使う

最初の確認では、自分の広告ユニットIDではなく、Google公式のサンプル広告ユニットIDを使うのがおすすめです。

例えばRewardedAdなら、Android用サンプルIDは次のようになっています。

ca-app-pub-3940256099942544/5224354917

このサンプルIDで広告が表示されるなら、かなり重要な切り分けができます。

  • SDK導入は成功している
  • 広告ロード処理も動いている
  • 通信自体も通っている可能性が高い

つまり、「Unity実装そのもの」は大きく壊れていない可能性が高いんです。

逆に、サンプル広告でも表示されない場合は、次のどれかを疑います。

  • 初期化順ミス
  • SDK導入失敗
  • 依存関係不足
  • ネット接続問題
  • 実機設定ミス

ここを確認せずに本番広告側を触り始めると、原因が分からなくなりやすいですね。

テストデバイス登録を確認する

自分の広告ユニットIDを使う場合は、テストデバイス登録も重要です。

これを設定しないまま開発すると、本番広告扱いになることがあります。

特に危険なのが、開発中に自分で広告を何度もクリックしてしまうことです。

AdMob側から無効な操作と判断されるリスクがあるので、必ずテストモードで確認しましょう。

基本的な流れはこちらです。

  1. 実機でアプリを起動する
  2. LogcatやXcodeコンソールを見る
  3. テストデバイスIDを取得する
  4. RequestConfiguration.TestDeviceIds に登録する

設定後、広告に「Test Ad」と表示されればOKです。

逆に、この表示がない場合は、本番広告として扱われている可能性があります。

テスト広告が出ない時の判断基準

ここはかなり大事なので、症状ごとに整理しておきます。

症状判断しやすい原因
サンプル広告で表示される実装はほぼ正常
サンプル広告でも失敗SDK・初期化・依存関係
Editorだけ表示されない実機確認を優先
実機だけ失敗Bundle ID・Resolver
一瞬表示されて消える再ロード・UI競合

特に初心者のうちは、「広告が一瞬出た=成功」と思いやすいのですが、実際にはUI重なりやシーン切り替えで消えているケースもあります。

Banner広告ならCanvasやSafe Area、RewardedAdなら表示タイミングも確認したいですね。

よくある失敗例

実際によくあるのが、次のパターンです。

  • 本番広告IDのまま開発している
  • アプリIDと広告ユニットIDを混同している
  • Android用IDをiOSに使っている
  • テストデバイス登録前に本番確認している
  • サンプル広告を使わず最初から本番運用している

広告実装って、ゲームロジックと違って「動かない理由がUnity外にもある」のが難しいところなんですよね。

なので私は、まずサンプル広告で確認 → テストデバイス確認 → 本番広告確認、という順番で見るようにしています。




実機でAdMob広告が出ない原因

Unity Editorでは問題なさそうなのに、スマホ実機だけ広告が表示されないことがあります。

このケース、かなり多いです。

しかも厄介なのが、「Editorでは正常」=「実機でも正常」ではないことなんですよね。

AdMobは最終的にAndroid/iOSのネイティブSDKで動くため、実機環境まで含めて確認する必要があります。

Bundle IDとPackage Nameを確認する

まず最優先で確認したいのが、Bundle ID(Package Name)です。

Unity側の設定と、AdMob管理画面で登録したアプリ情報が一致していないと、広告配信に失敗することがあります。

Unityでは、こちらから確認できます。

Project Settings → Player → Package Name
または
Bundle Identifier

例えば、AdMob側で次のように登録しているとします。

com.company.mygame

でもUnity側がこちらだとNGです。

com.company.testgame

1文字違うだけでも別アプリ扱いになります。

特に多いのが、

  • 開発版と本番版でIDが変わっている
  • AndroidとiOSで設定を混同している
  • 途中でPackage Nameを変更した

このパターンですね。

「昨日まで出ていたのに急に出なくなった」時は、Unity側のIdentifier変更を疑うこともあります。

LogcatやXcodeログを確認する

広告が出ない時、かなり重要なのが実機ログです。

ここを見ずに修正を続けると、正直かなり迷子になりやすいです。

AndroidならLogcat、iOSならXcodeコンソールを確認します。

特に見たいのは、LoadAdError の内容です。

例えばこんな感じですね。

LoadAdError(code: 3, message: No fill)

これは「広告在庫なし」の可能性が高いです。

逆に、SDK初期化失敗やIDミスだと、別のエラーメッセージが出ることがあります。

ここで大事なのは、「広告が出ない」だけで判断しないことです。

広告処理は、大きく分けると次の段階があります。

  1. SDK初期化
  2. 広告ロード
  3. 広告表示
  4. コールバック処理

どこで止まっているかによって、原因が変わります。

例えば、ロード成功しているのに表示だけ失敗しているなら、UI重なりや表示タイミングを疑うべきかもしれません。

ビルド後だけ動かない場合を確認する

Unity広告系でかなり多いのが、「Editorでは動くのにビルド後だけ失敗する」ケースです。

この場合、Unityコードそのものより、ビルド環境や依存関係の問題を疑います。

例えば次のような原因があります。

  • Android Resolver未実行
  • Gradle依存関係エラー
  • Proguard設定問題
  • プラグイン競合
  • 権限不足

特に広告SDKは、他SDKと競合しやすいんですよね。

Firebase、Analytics、通知SDKなどを追加した直後に壊れることもあります。

そのため、「広告コードを触っていないのに出なくなった」場合は、最近追加したSDKも確認したいところです。

3分チェックリスト

実機で広告が出ない時は、まずこの順番で確認すると整理しやすいです。

  • 実機がネット接続されているか
  • サンプル広告ユニットIDで試したか
  • Bundle IDが一致しているか
  • MobileAds.Initialize() を先に呼んでいるか
  • Android Resolverを実行したか
  • LogcatやXcodeでエラーを確認したか

特にLogcat確認は重要です。

広告実装って、見た目だけだと「何も起きていない」ように見えるんですが、ログを見ると意外とヒントがしっかり出ています🙂




No Fillと本番広告の違い

テスト広告は正常に表示されるのに、本番広告だけ出ない場合があります。

この時によく見るのが、No Fill というエラーです。

ただ、ここで初心者のうちはかなり混乱しやすいんですよね。

というのも、No Fillは「実装ミス」とは限らないからです。

No Fillは広告在庫不足の可能性が高い

No Fill(エラーコード3)は、ざっくり言うと「広告リクエストは成功したけど、今配信できる広告がなかった」という状態です。

つまり、次の流れ自体は成功しています。

  1. SDK初期化
  2. 広告リクエスト送信
  3. AdMobサーバー接続

ここがかなり重要です。

少なくとも、完全に通信不能な状態ではない可能性が高いんですね。

なので、テスト広告が正常に表示されているなら、まずは「コード全部壊れてる説」は少し下げて考えられます。

ただし、No Fillだからといって完全放置していいわけではありません。

次のような要因でも、本番広告が出にくくなることがあります。

  • 新規アプリ登録直後
  • 広告ユニット作成直後
  • 地域の広告在庫不足
  • app-ads.txt未設定
  • AdMobアカウント審査中
  • GDPR/UMP未対応

つまり、「実装問題」と「配信条件問題」を分けて考えるのが大切です。

本番広告だけ出ない時の確認項目

テスト広告は出るのに、本番広告だけ表示されない場合は、まずこちらを確認してみてください。

確認項目見るポイント
AdMob審査状態アプリや広告ユニットが承認済みか
app-ads.txtサイト側設定が必要な場合がある
UMP対応EEA向け同意取得が必要か
広告ユニット作成直後反映待ちの可能性
地域在庫時間帯や地域差もある

特に初心者のうちは、「Unityで広告が出ない」と思っていても、実際はAdMob管理画面側の問題だった…ということが本当に多いです。

私も最初、No Fillが出るたびにコードを書き換えていたのですが、あとで見ると単純に広告ユニット作成直後だったことがあります🙂

やるべきことと、やらなくていいこと

本番広告が出ない時は、次の行動がおすすめです。

やるべきこと

  • サンプル広告で実装確認する
  • テストデバイス設定を確認する
  • AdMob管理画面の審査状態を見る
  • Ad Inspectorでリクエスト状況を見る
  • UMP対応が必要な地域か確認する

やらなくていいこと

  • No Fillだけでコード全部を書き換える
  • 本番広告を何度もクリックする
  • エラーコードだけで断定する
  • テスト広告確認を飛ばす

広告系は、「今すぐ結果が出ない=壊れている」ではないんですよね。

特に本番広告は、広告在庫やアカウント状態など、Unity外の要因もかなり絡みます。

Ad Inspectorで確認する

本番広告の切り分けで便利なのが、Ad Inspectorです。

これは、AdMob公式の診断ツールで、実機上から広告リクエスト状態を確認できます。

例えば次のような情報を確認できます。

  • 広告リクエスト成功/失敗
  • どの広告ネットワークが失敗したか
  • メディエーション状態
  • エラー詳細

特にメディエーションを導入している場合は、かなり役立ちます。

ログだけでは分かりにくい「どの広告ネットワークで止まっているか」も確認しやすいんですよね。

もし「テスト広告は正常なのに、本番だけ不安定」という場合は、一度Ad Inspectorを使ってみる価値があります。




RewardedAdが表示されない原因

Banner広告やInterstitial広告は出るのに、RewardedAdだけ失敗することがあります。

このパターン、実はかなり多いです。

しかもRewardedAdは、単純に「広告を出す」だけではなく、

  • ロード状態
  • 表示タイミング
  • 報酬付与
  • 広告終了処理

このあたりも関係してくるので、通常広告より少し複雑なんですよね。

CanShowAdで表示可能か確認する

まず確認したいのが、広告ロード完了前に Show() を呼んでいないかです。

RewardedAdは、ロード完了していない状態では表示できません。

そのため、表示前に CanShowAd() を確認するのがおすすめです。

if (rewardedAd != null && rewardedAd.CanShowAd())
{
    rewardedAd.Show((Reward reward) =>
    {
        Debug.Log("報酬付与");
    });
}

初心者のうちは、「Load()を書いたからすぐShowできる」と思いやすいのですが、広告ロードは非同期処理です。

つまり、ロード完了前にボタンを押されると失敗することがあります。

なので、

  • ロード完了後にボタン有効化
  • CanShowAdで判定
  • ロード失敗時は再試行

この設計がかなり大事です。

広告は1回表示ごとに再ロードする

RewardedAdで意外とハマりやすいのが、「1回表示した広告を再利用しようとする」ケースです。

RewardedAdは、基本的に1ロードにつき1回表示する前提です。

つまり、こんな流れになります。

  1. LoadAd()
  2. Show()
  3. 広告終了
  4. 次のLoadAd()

ここを忘れると、最初だけ表示されて、2回目以降ずっと失敗することがあります。

特にゲーム開発中は、何度も同じボタンを押してテストするので、この問題がかなり見えやすいですね。

報酬付与コールバックを確認する

RewardedAdでは、「広告表示」と「報酬付与」は別処理です。

ここを混同すると、広告は見れたのに報酬が入らない状態になります。

例えば、こんな実装は危険です。

// NG例
OnAdFullScreenContentClosed += () =>
{
    AddCoin();
};

これだと、「広告を閉じただけ」で報酬が付与される可能性があります。

正しくは、Reward callback側で報酬処理を行います。

rewardedAd.Show((Reward reward) =>
{
    AddCoin();
});

特にメディエーションを使っている場合は、広告ネットワークごとにイベント順序が微妙に違うこともあります。

そのため、中級者以上なら、

  • 報酬付与済みフラグ
  • 広告終了フラグ
  • ゲーム再開処理

を分離して管理すると安定しやすいです。

UI更新やシーン遷移を詰め込みすぎない

RewardedAdのコールバック内で、次の処理を全部まとめてやってしまうケースがあります。

  • コイン加算
  • UI更新
  • SE再生
  • TimeScale変更
  • シーン切り替え
  • 広告再ロード

これ、実機だと不安定になりやすいです。

特にAndroid端末では、「Editorでは動くのに実機だけ失敗」が起きることがあります。

なので私は、広告イベントではフラグだけ変更して、実際のゲーム処理は Update() 側で行うことが多いです。

例えばこんな感じですね。

bool rewardCompleted = false;

rewardedAd.Show((Reward reward) =>
{
    rewardCompleted = true;
});

void Update()
{
    if (rewardCompleted)
    {
        rewardCompleted = false;
        AddCoin();
    }
}

少し回り道に見えるのですが、広告SDKまわりは「安全に分離する」ほうが結果的に安定しやすい印象があります。

よくある失敗例

  • ロード完了前にShowしている
  • 1回表示したRewardedAdを再利用している
  • 広告終了イベントだけで報酬付与している
  • ロード失敗時の再試行がない
  • 広告コールバック内でシーン遷移している

RewardedAdは、ゲームロジックとの結びつきが強いぶん、普通の広告より「設計」が影響しやすいです。

なので、「表示されるか」だけでなく、「広告終了後にゲーム状態が正常に戻るか」まで確認すると、かなり安定しやすくなります。




よくある誤解と注意点

AdMob実装は、Unity側・AdMob側・実機環境が全部関係してくるので、初心者のうちは誤解しやすいポイントがかなり多いです。

ここを勘違いしたまま修正を続けると、逆に原因が見えなくなることがあります。

No Fillは必ず実装ミスではない

まずかなり多い誤解が、

「No Fill=コードが壊れている」

と思ってしまうことです。

でも実際には、No Fillは広告在庫不足や審査状態など、配信側の要因でも発生します。

特に次の状態では、本番広告が安定しないことがあります。

  • 新規アプリ登録直後
  • 広告ユニット作成直後
  • 新規AdMobアカウント
  • 地域在庫不足

なので、まずは「テスト広告が正常に表示されるか」を確認しましょう。

テスト広告が出ているなら、SDK導入や基本実装は通っている可能性が高いです。

Unity Editorだけで判断しない

Unity Editorで広告が出ないと、不安になりますよね。

でもAdMobは、最終的にはAndroid/iOSのネイティブSDKで動いています。

つまり、実際に重要なのは実機側です。

特にRewardedAdやInterstitial広告は、Editor上では挙動が違うこともあります。

そのため、

  • Editorでは表示確認だけ
  • 最終判断は実機ログ
  • 本番挙動確認はテストデバイス

この考え方がかなり大事です。

「Editorでは出ないけど実機では正常」というケースも普通にあります。

本番広告を自分でクリックしない

これはかなり重要です。

開発中に本番広告を何度もクリックすると、無効な操作として扱われる可能性があります。

特に初心者のうちは、

  • 本当に遷移するか確認したい
  • 収益化できるか試したい
  • 広告動作を細かく見たい

こんな気持ちになりやすいんですよね。

でも、開発中は必ずテスト広告を使いましょう。

確認方法としては、

  • サンプル広告ユニットID
  • テストデバイス登録
  • Ad Inspector

この3つを使うのが安全です。

UMPやapp-ads.txtは別問題として考える

広告が表示されない時、UMPやapp-ads.txt関連の記事を見て混乱する人も多いです。

ただ、この2つは「広告SDKが動くか」とは少し別の話なんですよね。

ざっくり分けると、

  • SDK初期化・広告ロード → Unity実装側
  • UMP・app-ads.txt → 広告配信条件側

というイメージです。

もちろん本番運用では重要ですが、まずは「テスト広告が正常に出るか」を優先して切り分けると整理しやすいです。

SDKバージョン差異にも注意する

AdMob SDKは、UnityバージョンやGoogle Mobile Ads Plugin更新によって挙動が変わることがあります。

例えば、

  • 初期化方法
  • コールバック名
  • 対応OSバージョン
  • 依存ライブラリ

このあたりは更新されることがあります。

なので、古い動画教材や数年前のブログ記事をそのままコピペすると、動かないケースもあります。

特にChatGPT生成コードを使う場合は、古いAPIが混ざることもあるので注意したいですね。

「コードが間違っている」というより、「SDK世代が違う」ケースも意外とあります。




Unity AdMob広告が出ない時のまとめ

UnityでAdMob広告が表示されない時は、焦ってコードを書き換えるより、まず「どこで止まっているか」を切り分けるのがかなり大切です。

特に初心者のうちは、

  • 広告が出ない
  • No Fillが出る
  • RewardedAdだけ失敗する

こうした症状を全部同じ問題として考えてしまいやすいんですよね。

でも実際には、原因がかなり違います。

まず確認したい順番

迷った時は、私はだいたい次の順番で確認しています。

  1. サンプル広告ユニットIDで表示確認
  2. AdMobアプリID・広告ユニットID確認
  3. MobileAds.Initialize() の順番確認
  4. Bundle ID / Package Name確認
  5. LogcatやXcodeでLoadAdError確認
  6. No Fill・審査・UMP・app-ads.txt確認

この順番にすると、「Unity実装側の問題」なのか、「AdMob配信側の問題」なのかを整理しやすいです。

特に、テスト広告が正常に出るかどうかは大きな分岐点になります。

テスト広告が出るなら、SDK導入や基本実装はかなり正常寄りです。

逆に、テスト広告すら表示されない場合は、SDK初期化や依存関係から確認したほうが早いケースが多いですね。

RewardedAdはゲーム設計も影響する

RewardedAdだけ失敗する場合は、単純な広告表示だけでなく、ゲーム側の設計も影響します。

例えば、

  • ロード完了前にShowしている
  • 広告終了イベントだけで報酬付与している
  • コールバック内でシーン遷移している
  • 1回表示した広告を再利用している

こういったケースですね。

広告SDKは非同期処理が多いので、「動く時もあるけど不安定」が発生しやすいです。

なので、広告処理とゲーム処理を少し分離して設計すると、かなり安定しやすくなります。

ログ確認が最短ルートになることが多い

広告実装で一番もったいないのが、ログを見ずに修正を続けることです。

AdMobは、見た目だけだと「何も起きていない」ように見えても、LogcatやXcodeコンソールにはかなりヒントが出ています。

例えば、

  • No Fill
  • 初期化失敗
  • 広告ロード失敗
  • Adapterエラー
  • ネットワーク問題

このあたりは、ログを見るだけで切り分けしやすくなります。

私も最初の頃は、「とりあえずコード修正」を繰り返して時間を溶かしていたのですが、ログを見る習慣がついてからかなり調査が早くなりました🙂

広告実装は、Unityだけではなく、

  • AdMob管理画面
  • 実機環境
  • 広告在庫
  • 同意管理
  • SDK依存関係

この全部が関係してきます。

だからこそ、「広告が出ない=コード全部壊れてる」と決めつけず、症状ごとに順番に確認していくのがおすすめです。

広告・課金・分析などをまとめて管理したい場合は、Unity Asset Storeの収益化向けアセットを使う方法もあります。

自前実装で原因切り分けができるようになってから導入すると、かなり扱いやすいです。


よくある質問(FAQ)

Q
Unity EditorでAdMob広告が表示されません。実装ミスですか?
A

Editorだけでは判断しないほうが安全です。

AdMobは最終的にAndroid/iOSのネイティブSDKで動作するため、実機確認がかなり重要になります。

特にRewardedAdやInterstitial広告は、Editor上と実機で挙動が違うことがあります。

まずは次の順番で確認するのがおすすめです。

  1. Google公式のサンプル広告ユニットIDを使う
  2. 実機ビルドする
  3. LogcatやXcodeログを確認する
  4. テストデバイス設定を確認する

「Editorで出ない=失敗」とは限らないので、最終判断は実機側で行いましょう。

Q
No Fillが出たら待つしかありませんか?
A

待つだけではなく、まず切り分けが大事です。

No Fillは「広告在庫不足」の可能性が高いですが、次のような要因でも発生することがあります。

  • 広告ユニット作成直後
  • AdMob審査中
  • UMP未対応
  • app-ads.txt未設定
  • 地域在庫不足

まずはテスト広告が正常に表示されるか確認してください。

テスト広告が出るなら、SDK導入や基本実装はかなり正常寄りです。

逆にテスト広告も出ない場合は、No Fill以前に実装側の問題を疑ったほうが早いですね。

Q
RewardedAdは表示されるのに報酬が入りません
A

この場合は、「広告表示」と「報酬付与」を別処理として確認すると整理しやすいです。

初心者のうちは、広告終了イベントで報酬を付与してしまうケースがよくあります。

ただ、RewardedAdでは専用のReward callback側で処理するほうが安全です。

rewardedAd.Show((Reward reward) =>
{
    AddCoin();
});

また、広告コールバック内でシーン遷移やUI更新を詰め込みすぎると、実機だけ不安定になることがあります。

特にAndroid端末では、「たまに失敗する」が起きやすいので、フラグ管理してUpdate側で処理する設計もおすすめです。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク