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

メディエーションを増やしたら iOS の計測が静かに痩せた — SKAdNetwork ID のズレを4アプリで揃える

メディエーションに新しいパートナーを足したのに iOS の収益が伸びず、SKAdNetwork ID の登録漏れが原因だった実体験。Info.plist の SKAdNetworkItems を4アプリで突き合わせ、Antigravity エージェントに照合させて人間が採否を決める運用を紹介します。

skadnetworkadmob15mediation3ios32app-dev41antigravity399

プレミアム記事

メディエーションに Bidding 型のパートナーを3つ足した週、iOS 側のリクエストは増えたのに、収益はほとんど動きませんでした。Android では同じ追加で素直に伸びていたので、しばらく「単に在庫が薄いだけ」と思い込んでいました。腑に落ちなかったのは、AdMob の管理画面ではどのネットワークも応答を返している、つまり「埋まってはいる」のに、収益効率(eCPM)だけが鈍いという非対称です。

原因は在庫ではなく計測でした。新しいパートナーの SKAdNetworkIDInfo.plistSKAdNetworkItems に登録していなかったため、そのネットワーク経由のインストールが iOS のアトリビューションから漏れていたのです。計測が痩せると最適化の学習が回らず、入札単価が伸びず、結果として eCPM が上がらない。広告は出ているのに収益が付いてこない、という分かりにくい形で表面化します。

個人開発で iOS を4本(壁紙系・癒し系)並行運用していると、この種の「静かな劣化」が一番こわい相手です。私自身、Dolice のアプリ群でこの問題に長く向き合ってきました。クラッシュなら Crashlytics が鳴りますが、SKAdNetwork の登録漏れは何のエラーも出さず、ただ収益が伸びないだけだからです。今回はその切り分けと、4アプリで Info.plist を揃え続ける運用を、Antigravity のエージェントを突き合わせ役に使って整えた記録です。

「埋まっているのに伸びない」を計測の問題として疑う

まず確認したのは、AdMob のメディエーションレポートで各ネットワークの応答率(match rate)は出ているのに、iOS だけ最適化ネットワーク(Bidding)の貢献が想定より低い、という点でした。Android との差が手がかりです。Android には SKAdNetwork のような OS 側のアトリビューション登録という仕組みがないため、アダプタを足せばそのまま計測されます。iOS だけが伸び悩むなら、iOS 固有の計測経路、つまり SKAdNetwork を疑うのが筋でした。

切り分けの順序はこうです。まず広告自体が出ているか(impression があるか)を Ad Inspector で確認します。次に、出ているのに最適化が回らないなら、そのネットワークのインストールが計測されているかを疑います。SKAdNetwork は、広告ネットワークの ID があらかじめアプリの Info.plist に登録されていて初めてポストバック(インストールの通知)が成立します。登録がなければ、そのネットワーク経由のインストールは「誰の成果でもない」扱いになり、入札最適化の燃料が供給されません。

症状ありがちな誤診実際の原因
iOSだけ新パートナーのeCPMが鈍い在庫が薄い・単価が低い市場SKAdNetworkID未登録で計測が欠落
応答はあるのに最適化が学習しない学習期間が足りないポストバックが届かず最適化の燃料がない
4アプリで効きにムラがあるアプリごとのユーザー層の差Info.plistの登録内容がアプリ間でズレている

SKAdNetworkItems が「最適化の燃料」になる理由

SKAdNetworkItems は、Info.plist に列挙する広告ネットワーク識別子のリストです。1件は次のような形です。

<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ludvb6z3bs.skadnetwork</string>
  </dict>
  <!-- ... 各メディエーションパートナーの ID を続ける ... -->
</array>

ここに登録された ID のネットワークだけが、StoreKit を通じてインストールのポストバックを受け取れます。メディエーションでパートナーを足すという行為は、実質的に「新しい広告ネットワークを呼び出す」ことなので、そのネットワークの ID が Info.plist になければ、配信はできても計測ができない、という片肺状態が生まれます。

重要なのは、AdMob のアダプタ(Pod / SPM パッケージ)を追加することと、SKAdNetworkItems を更新することが、別々の作業だという点です。アダプタを足すと配信は始まります。計測を始めるには、そのネットワークの公開 SKAdNetworkIDInfo.plist に手で足す必要があります。この二つが分離しているために、「アダプタは入れたが ID を入れ忘れた」というズレが、特に複数アプリで起きやすいのです。

私の4アプリは広告構成がほぼ共通なので、本来は同じ ID セットが入っているべきでした。ところが実際には、あるアプリには Liftoff の ID があるのに別のアプリにはない、といった小さなズレが溜まっていました。手で4回 Info.plist を編集すれば、1回くらいは抜けます。それが今回の「ムラのある劣化」の正体でした。

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

この記事の続きを読む

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

この記事で得られること
アダプタを足してもInfo.plistのSKAdNetworkItemsを更新しないと、iOSの計測が静かに痩せてeCPMが下がる仕組み
各ネットワークの公開IDとInfo.plistの登録を突き合わせる照合スクリプトと、エージェントへの照合指示の型
IDの採否は人間、退屈な突き合わせはエージェント、という分担をビルド検証ゲートで担保する手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-06-25
「広告を見たら壁紙を解放」をエージェントがクライアント側だけで付与していた — リワード報酬をSSVで検証し直した記録
リワード広告を見たら壁紙を解放する機能を Antigravity のエージェントに頼んだら、解放フラグをクライアント側だけで書き込む実装が返ってきました。なぜそれでは足りないのか、AdMob のサーバーサイド検証(SSV)で報酬付与を検証し直し、二重付与まで止めた設計を記録します。
アプリ開発2026-06-25
Xcode Cloud の無料25時間が月末に静かに尽きるとき — コンピュート時間を計測して守る運用メモ
Xcode Cloud の無料コンピュート枠が月末に枯渇し、ビルドがキューで待たされる前に。消費の内訳を App Store Connect API で実測し、不要ビルドの早期停止・テスト分割でCI時間を運用で守る実践メモです。
アプリ開発2026-06-21
戻るボタンで広告が出る/出ないが安定しない — 入れ子のifを独立ガードのリストに作り替えた記録
戻るボタン押下時のインタースティシャル表示判定が、入れ子のif文で優先度が暗黙化して壊れていました。各条件を理由つきの独立ガードに分解し、決定表からテストを生成した設計をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →