Godot 4.5のiOSアプリで、ATTの結果に応じて広告を切り替える。AIに作らせて終了試験100回まで通した記録
前提
Godot 4.5で作ったiOSアプリに、AdMobの広告を入れています。広告を出す前に、ATT(アプリ追跡の許可)の結果とUMP(同意の取得)の状態を見て、広告の要求を切り替える必要がありました。この記事は、その条件をAIに作らせ、Windows上のGodot 4.5で試験した記録です。対象は玉ころの1.0(7)です。
同じ悩みの質問はGodotのフォーラムにもあります。ただ、条件ごとの試験数や、終了時のクラッシュ回数まで書いた記事は、検索した範囲では見つけられませんでした。上位の結果を全部は読めていません。
実装した条件
広告を要求するたびに、ネイティブの getTrackingAuthorizationStatus を呼びます。値が3(許可)で、UMPが不要か取得済みのときだけ、npa を省略します。それ以外、状態が不明、型がおかしい場合は npa=1 にします。UMP/TCFの値は上書きしません。
最初に出てきた案は、ポリシーを変える前に取り消しました。実装したのは、その次の案です。
試験の結果
| 項目 | 件数 |
|---|---|
| ATTの条件 | 80 |
| 状態が変わる遷移 | 6 |
| 状態を取得できない場合 | 3 |
| SDKの項目 | 41 |
| 広告なしの終了試験 | 50 |
| 模擬広告の終了試験 | 50 |
終了試験は、保存、読み戻し、実際の抽選、終了までを1回として100回通しました。クラッシュは0でした。
自分の試験の穴
画面を目で確認したとき、試験用の保存ディレクトリが作られていないことに気づきました。古い画像が残っていました。
直したのは製品ではなく試験のほうです。ディレクトリの作成と、保存結果・エラーの検査を足し、20項目をやり直して通りました。
自分の試験にも穴がありました。最初の試験は、変えてはいけない部分まで変わっていても通ってしまう作りでした。新しい取得処理以外が変わっていないことを確かめる検査を、別に足しています。
食い違う情報
「ATTを拒否されたら非パーソナライズ広告だけが出せる」「Appleは npa でもプロンプトを求める」という、食い違う返信がAdMob公式のGoogleグループ(google-admob-ads-sdk)にありました(2026-11-11に確認。スレッド:Does AdMob automatically handle the result of an iOS AppTrackingTransparency authorization request?、Ads not showing on iOS devices if user does not give ATT consent)。この記事は、自分の実装がどうしたかだけを書きます。規約の読みは断定しません。拒否されたときに広告が出ない、という報告もあります。