AdMob の app-ads.txt 検証が通らない——ファイルの中身より先に疑う2箇所
app-ads.txt をルートに置いて中身も正しいのに、AdMob が「アプリを確認できませんでした」のまま変わらない。原因はファイルではなく、Google が辿る起点であるストアの「デベロッパ Web サイト」欄が空なこと。しかも iOS ではその欄を公開中の版に後から入れられず、API で書こうとすると 409 で弾かれる。
app-ads.txt をドメインのルートに置き、中身も正しいのに、AdMob の検証がいつまでも通らない。ファイルを何度も直したくなるが、たいていファイルは無実だ。
事象
AdMob の管理画面が、アプリに対して次のいずれかを出したまま変わらない。
- 「アプリを確認できませんでした」
- 「app-ads.txt が設定されている可能性がありますが、情報が一致しません」
一方でファイル側は実測で問題がない。
https://example.com/app-ads.txtが HTTP 200 を返す- ドメインのルート直下に置いてある
- 中身の記述形式も正しい
24 時間どころか数週間待っても状態が変わらない。
原因1:Google が辿る起点が存在しない
app-ads.txt はドメイン単位の仕組みで、Google はまず「そのアプリの開発者サイトはどこか」をアプリのストア掲載情報から読む。iOS の場合、これは App Store Connect のマーケティング URL(API 上の marketingUrl)であり、ストアページ下部に「デベロッパ Web サイト」として表示されるリンクだ。
ここが空だと、Google 側には辿るべき起点が存在しない。ファイルがいくら正しく置かれていても、誰も見に来ないので永久に検証されない。
紛らわしいのはサポート URL では代用できないこと。同じドメインをサポート URL に入れていても検証は通らなかった。読まれているのはマーケティング URL の方だ。
確認方法は単純で、App Store のアプリページを一番下までスクロールして「デベロッパ Web サイト」のリンクが出ているかを見る。出ていなければ、その時点で検証は絶対に通らない。
原因2:pub ID の書式が管理画面の表記と違う
もう一つ、ファイル側で唯一ありがちなミスがこれだ。app-ads.txt に書く発行者 ID は、管理画面に表示される ca-pub- ではなく pub- 形式で書く。
❌ google.com, ca-pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
✅ google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
管理画面からコピーするとそのまま ca-pub- が付いてくるので踏みやすい。ads.txt でも同じ形式なので、Web サイト側で一度やらかしていると再発しやすい。
本題:そのマーケティング URL は、公開中の版に後から入れられない
ここからが本番だ。「じゃあマーケティング URL を入れれば終わりだろう」と管理画面を探しても、公開中のアプリでは編集できる場所が見つからない。
App Store Connect API で直接書きに行くと、こう返る。
409 CONFLICT
Attribute 'marketingUrl' cannot be edited at this time
マーケティング URL は、プロモーション用テキストのような「いつでも編集できる」プロパティのグループに入っていない。次のバージョンを作って提出しない限り、この欄は埋められない。
つまり、設定を直せば済む話だと思って管理画面を探し続けても、出口はそこにない。次の版に乗せるまで検証は通らない、というのが答えになる。
解決策
次のバージョンの掲載情報にマーケティング URL を入れる。編集できるのは提出前の版だけなので、API なら該当バージョンのローカライズに marketingUrl を書き、GUI なら次の版の「App 情報」から入れる。
審査待ちの版に、後から入れに行かない
審査待ち(WAITING_FOR_REVIEW)の版が既にあると、そこへ差し込みたくなる。やめておいた方がいい。メタデータを編集すると審査キューから外れることがあり、その代わりに得られるのは検証が数週間早く通ることだけだ。未検証のままでも広告配信自体は動くので、釣り合わない。
自分の場合は、審査中の版は触らず次の版に回した。急いでも数週間の差にしかならないので、これで困っていない。
入ったら 24 時間待つ
新しい版が公開されてストアページに「デベロッパ Web サイト」が出てから、AdMob のクロールを待つ。ドメインは App Store の表記と完全に一致している必要がある(www の有無も含む)。
補足
- 未検証の状態は放置されやすい。広告は普通に配信されるので、収益画面を見ていても異常に気づかない。設定した覚えが無いなら一度見に行く価値がある
- ルート直下にファイルを置けないホスティングなら、静的ホスティングを別途立てて、そのドメインをマーケティング URL にする手がある
- 順番としては、「ファイルが正しいか」より先に「相手がそのファイルに辿り着けるか」を見る方が速い。今回はファイル側を一度も直さずに終わった