◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-06-30上級

Antigravity に任せた App Open 広告が、課金画面やリワード動画から戻るたびに出てしまう

Antigravity のエージェントに App Open 広告を実装させると、自前のリワード動画や Google Play の課金シートから戻った瞬間にも広告が出ます。AdMob のポリシー違反にも触れるこの挙動を、前面復帰の理由を記録するフォアグラウンド調停役で抑える設計を、動く Kotlin と検証手順つきで解説します。

antigravity461admob16app-open-adandroid29monetization15

✦ プレミアム記事

個人開発で運営している壁紙アプリに App Open 広告を足そうとして、実装そのものは Antigravity のエージェントに任せました。出てきたコードは数十行で動き、ホーム画面から戻ると広告が出ます。ところが実機で触っていると、自分のリワード動画を見終えて戻った瞬間にも App Open 広告が重なって出るのです。課金シートを閉じた直後にも出ます。読者からすれば「広告を見たのに、また広告」という最悪の体験です。

原因はエージェントを責められません。App Open 広告の素朴な実装は「アプリが前面に戻ったら出す」であり、エージェントはその通りに書いただけです。抜けていたのは、前面に戻った理由を問わないという一点でした。ここを埋めないと、AdMob のポリシー(自社の全画面コンテンツの直後に App Open を出さない、という趣旨)にも抵触します。

「前面復帰のたびに出す」がなぜ事故になるのか

App Open 広告は本来、ユーザーがアプリを離れて戻ってきたとき、つまりコンテンツを待つ自然な隙間に出すための枠です。問題は、Android の Activity から見ると「ユーザーがホームに行って戻った」も「自分が出した全画面広告から戻った」も、同じ onStart として観測される点にあります。

私が踏んだ事故を整理すると、出してはいけない復帰は主に4種類でした。

  • 自前のインタースティシャル/リワード動画から戻ったとき(広告→広告の二重表示・ポリシー抵触)
  • Google Play の課金シートを閉じたとき(購入直後に広告は不信感に直結します)
  • Chrome Custom Tabs で外部リンクを開いて戻ったとき
  • コールドスタート時(起動スプラッシュと App Open が二重に走る)

逆に出してよいのは、ユーザーが自分の意思でアプリを離れて戻ってきたときだけです。この区別を onStart 単体では作れないのが核心です。

エージェントが書く素朴な実装と、その盲点

Antigravity に「App Open 広告を入れて」と頼むと、おおむね次の骨格が出てきます。ProcessLifecycleOwner でプロセス全体の前面化を監視し、戻ってきたら show() を呼ぶ形です。

// エージェントが最初に出してくる典型形(このままだと事故る)
class MyApp : Application(), DefaultLifecycleObserver {
    private lateinit var appOpenAdManager: AppOpenAdManager
 
    override fun onCreate() {
        super<Application>.onCreate()
        MobileAds.initialize(this)
        appOpenAdManager = AppOpenAdManager(this)
        ProcessLifecycleOwner.get().lifecycle.addObserver(this)
    }
 
    // ★ ここが盲点: 「なぜ前面に戻ったのか」を一切問わない
    override fun onStart(owner: LifecycleOwner) {
        appOpenAdManager.showAdIfAvailable(currentActivity)
    }
}

このコードは、ホーム復帰でもリワード動画からの復帰でも等しく onStart で発火します。エージェントの出力をレビューするとき、私は「動くか」より先に「どの経路で前面に戻ってもこれが正しいか」を問うようにしています。App Open 広告に関してはここで必ず引っかかります。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦リワード動画や課金シートから戻るたびに App Open 広告が二重表示されていた問題を、復帰要因を識別する調停役で止められるようになる
✦ProcessLifecycleOwner の ON_START だけに頼った素朴な実装が、なぜ AdMob のポリシー違反と離脱を生むのかを理解し、抑制条件を自分の手で設計できる
✦コールドスタート・全画面広告・課金フロー・外部リンクからの復帰を切り分ける Kotlin 実装を、自分のアプリにそのまま組み込める
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

▣ アプリ開発2026-03-27
AdMob のウォーターフォールを残したまま、ビッディングを足す判断
運用中の iOS 4 アプリでウォーターフォールを残したままビッディングを加えた判断を、ATT と初期化の順序、広告ゲートの設計、見るべき指標とともに整理しました。
▣ アプリ開発2026-08-31
有料導線とレビュー訴求が重なるのを、ダイアログではなくゲートで止めています
有料プラン案内・レビュー訴求・リワード広告のダイアログが同じ瞬間に重なった実例から、表示可否の判断を各ダイアログから中央ゲートへ移した設計と、エージェントに不変条件を渡す指示の書き方、CI での機械検査までをまとめました。
▣ アプリ開発2026-05-24
iOS Push 通知の A/B 運用を Antigravity Agent で週次回す — 文面・配信時刻・セグメントの自律改善ループ
個人開発で長く運用してきた壁紙系・癒し系アプリの実体験から、iOS Push 通知の A/B を Antigravity Agent に任せる週次運用設計をまとめました。FCM・Firebase Analytics・BigQuery の具体実装に加え、毎週の勝者宣言がどれだけ当たっているかを手元のシミュレータで測り、アーム数と判定条件を測定結果に合わせて直しています。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます