iOSアプリのGoogle広告コンバージョン計測:Adjustだけじゃ完結しない話
広告運用から「Google広告のiOSコンバージョン計測、これ入れて」と言われた。
Adjustもう入ってるし、Adjust SDKアップデートすればいけるでしょ、くらいに思ってた。
調べたら全然そんなことなかった。Adjust SDK + Firebase SDK + Adjust ODMプラグイン、この三つ全部が揃わないと完結しない。しかも最後にAdjust側にホワイトリスト登録してもらう必要まであった。
iOS広告計測は思ったより複雑です、という話をまとめた。
iOS広告計測が複雑になった背景
iOS 14.5以降のATT制限
iOS 14.5(2021年4月)以降、IDFA(Identifier for Advertisers)取得にユーザーの明示的な同意が必須になった。これがATT(App Tracking Transparency)。
ユーザーが「トラッキング拒否」を選択すると、アプリ側はIDFAが取得できなくなる。同意率はだいたい20-30%程度の実績が多い。
つまり、従来のIDFA頼みの計測方法がほぼ機能しなくなった。
従来の計測が使えない理由
昔(iOS 14.4まで)は:
- アプリ → IDFA取得 → Google Ads に送信 → 「あ、この広告クリックした人ね」と判定
今(iOS 14.5以上)は:
- ユーザーの20-30% → IDFA取得可能(計測できた)
- ユーザーの70-80% → IDFAなし(計測不可)
Google Ads側からしたら、計測できるのは少数派だけ。これでは広告効果の判定ができない。
だから代替案が必要になった。それが「On-Device Conversion」という仕組み。
計測ルートの全体像
Google広告のiOSコンバージョン計測には、大きく2つのルートがある:
Adjust経由ルート
アプリ内イベント
↓
Adjust SDK + ODMプラグイン
↓
Firebase Analytics(Google On-Device Conversion用)
↓
Adjustサーバー(S2S連携)
↓
Google Ads
特徴:
- 既にAdjustを使ってる場合の自然な選択肢
- MMPとしての強み(複数の広告プラットフォーム対応)
- Adjust側でICMホワイトリスト登録が必要
Firebase経由ルート
アプリ内イベント
↓
Firebase SDK(v11.14.0以上)
↓
Firebase Analytics(Google On-Device Conversion用)
↓
Google Ads
特徴:
- Googleエコシステム内で完結
- セットアップが比較的シンプル
- これからの計測なら最初からこっちにするのも選択肢
どちらを選ぶ?
| ケース | ルート |
|---|---|
| 既にAdjustを使ってる | Adjust経由 |
| Firebaseのみ使ってる | Firebase経由 |
| どちらでもいい場合 | Firebase経由(セットアップが簡単) |
重要: どちらを選んでも、Firebase Analytics + Google On-Device Conversion(ODM)の連携は必須。これはGoogle Adsとしての要件。
「Adjustだけでいい」の誤解
ここが最初にハマったポイント。
「Adjust使ってるしAdjust SDKアップデートすればいい」と思ってた。
でも、実際に必要なのは:
- Adjust SDK v5.4.1以上にアップデート
- Adjust ODMプラグインを追加(Google On-Device Measurement用)
- Firebase SDK v11.14.0以上を導入
- Firebase ↔ Google Ads連携を設定
- ICMホワイトリスト登録をAdjust側に依頼
「Adjust SDK入れました」だけでは動かない。Firebaseも必須。この組み合わせで初めて「Google On-Device Conversion」という仕組みが機能する。
実装手順(Adjust経由)
1. Adjust SDKをアップデート&ODMプラグイン追加
CocoaPodsの場合
Podfile に以下を追加(または更新):
pod 'Adjust', '5.4.1'
pod 'Adjust/AdjustGoogleOdm'
pod 'GoogleAdsOnDeviceConversion', '3.0.0'
Firebase Analytics 11.14.0以上を既に導入してたら、GoogleAdsOnDeviceConversion は自動的に依存関係で入ってくるため、手動追加不要。
その後、pod install:
pod install
Swift Package Managerの場合
Xcode で File → Add Package Dependencies を選択し、GitHub リポジトリを追加:
https://github.com/adjust/ios_sdk
バージョン 5.4.1以上を選択して、ターゲットに AdjustGoogleOdm を追加。
2. ATT許可リクエストの実装
iOS 14.5以上でATTダイアログを表示する処理。アプリ起動後、ユーザーに「トラッキング許可する?」と聞く部分。
Swift側(AppDelegate):
import AppTrackingTransparency
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
requestTrackingAuthorization()
return true
}
func requestTrackingAuthorization() {
if #available(iOS 14.5, *) {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
self.initializeAdjust()
}
}
} else {
initializeAdjust()
}
}
タイミングの注意:起動直後に表示するとユーザーが拒否しやすいので、アプリの価値を理解してもらった後(1-2画面スキップした後)に表示するのがベストプラクティス。
3. Adjust SDK初期化(Flutter/Dart)
import 'package:adjust_sdk/adjust.dart';
import 'package:adjust_sdk/adjust_config.dart';
void initializeAdjust() {
AdjustConfig config = AdjustConfig(
'{YourAppToken}',
AdjustEnvironment.production, // 本番はproduction
);
// 非常に重要:ATT許可ダイアログの応答を待つ時間
config.attConsentWaitingInterval = 120; // 120秒
// ログレベル(開発時)
config.logLevel = AdjustLogLevel.verbose;
Adjust.initSdk(config);
}
attConsentWaitingInterval を設定しておくと、Adjust SDKがATT許可の状態を待ってくれる。これを忘れるとATT拒否ユーザーの計測ができない。
4. Firebase SDK の確認&Google Ads連携設定
Flutter側から Firebase Analytics を初期化(通常はFirebaseを既に使ってたら不要):
import 'package:firebase_analytics/firebase_analytics.dart';
final analytics = FirebaseAnalytics.instance;
// イベント送信例
await analytics.logEvent(
name: 'purchase',
parameters: {
'currency': 'JPY',
'value': 980,
'transaction_id': 'txn_12345',
},
);
Google Ads側の設定(管理画面):
- Google Ads にログイン
- 「ツール」→「コンバージョン」
- 新規コンバージョンアクションを作成、またはAndroid用を複製してiOS版を作成
- ソースを「Google Analytics for Firebase」に設定
- 対応するFirebaseイベント(例:
purchase)を選択
5. Adjust側のGoogle Ads連携設定
Adjust管理画面で以下を実施:
- パートナー設定 → Google Ads を有効化
- Google Ads側で発行したコンバージョンのトークンをAdjustに登録
- Flutterアプリ側で、該当イベントをAdjustにも送信:
void trackPurchase(double amount, String currency, String transactionId) {
// Adjust側でも記録
AdjustEvent event = AdjustEvent('{AdjustPurchaseEventToken}');
event.setRevenue(amount, currency);
event.setTransactionId(transactionId);
Adjust.trackEvent(event);
}
6. ICMホワイトリスト登録(Adjust側作業)
Adjust側に連絡して、対象アプリの以下を伝える:
- iOS App ID(例:
com.example.myapp) - Adjust App Token
Adjust側がICM(In-App Conversion Measurement)のホワイトリストに追加してくれる。これがないと、いくら実装しても計測が開始されない。
テストとデバッグ
Sandbox環境での確認
Adjust管理画面の Testing Console で、イベント送信がちゃんと到達してるか確認できる。
本番アプリをTestingコンソール登録済みのテストデバイスで実行すると、イベントがリアルタイムで表示される。
// デバッグログをONにしておく
config.logLevel = AdjustLogLevel.verbose;
ログ出力で「Event logged」などのメッセージが出てれば、SDK側は動作してる。
Google Adsでのコンバージョン確認
Google Ads管理画面のコンバージョン数は、計測から反映されるまでに 24-48時間かかる。
焦ってデバッグ画面で「あれ、数字が出ない」と思わないこと。翌日朝に確認すると出てたりする。
ハマりポイント・注意点
1. Adjust SDKだけじゃ完結しない
これが最大のポイント。Firebase SDKも導入が必須。
調べても「Adjustで計測できます」みたいな説明が多くて、Firebase部分が軽視されてることが多い。でもGoogle Adsの要件として Firebase Analytics + ODMの連携が必須。
2. Firebase SDKバージョンは v11.14.0以上
2025年6月のアップデートで、新しい「イベントデータ方式」が追加された。
古いバージョン(11.13以前)だと、この方式に対応してない。アップデート忘れると計測が始まらない可能性がある。
3. attConsentWaitingInterval の設定忘れ
config.attConsentWaitingInterval = 120;
この設定がないと、ATT許可を待たずにAdjust SDK が初期化されてしまう。
ATT拒否ユーザーのコンバージョン計測ができなくなる。
4. ICMホワイトリスト登録は自動じゃない
コード側で全部実装して、Firebase Analytics も設定して、それでも Adjust側の手動登録がないと始まらない。
「実装完了したのに計測されない」という場合、大抵この登録忘れ。
5. Sandbox vs Production の環境切り替え
開発中は:
AdjustEnvironment.sandbox
本番は:
AdjustEnvironment.production
本番デプロイ時に、ここを production に変え忘れると、Google Adsに本来のデータが送信されない。
6. ATTダイアログのタイミング
起動直後に表示すると、意味が分からないままユーザーが「許可しない」を選んでしまう。
ベストプラクティスとしては:
- ユーザーがアプリの価値を理解した後(2-3画面進んだ後)
- または明確にトラッキングが必要な場面で表示
Firebase経由ルートの場合(補足)
Adjustを使ってない場合、Firebaseだけでもいける:
import 'package:firebase_analytics/firebase_analytics.dart';
final analytics = FirebaseAnalytics.instance;
// イベント送信
await analytics.logEvent(
name: 'purchase',
parameters: {
'currency': 'JPY',
'value': 9800,
},
);
Google Ads側で Firebase Analytics を連携設定すると、自動的にODM(On-Device Measurement)が有効になる。
Adjustほどの柔軟性はないが、セットアップは単純。「今からiOS広告計測を始める」という場合は、Firebaseダイレクトという選択肢も十分あり。
実装チェックリスト
□ Adjust SDK を v5.4.1以上にアップデート
□ Adjust ODMプラグインを追加(Podfile/SPM)
□ pod install または パッケージ更新を実行
□ Firebase SDK を確認(v11.14.0以上)
□ AppDelegate で ATT許可リクエスト実装
□ Dart側で Adjust SDKを初期化(attConsentWaitingInterval設定)
□ Firebase Analytics でイベント送信
□ Adjust管理画面で Google Ads連携を有効化
□ Google Ads側でコンバージョンアクション作成
□ TestingConsoleでイベント到達確認
□ Adjust側に ICMホワイトリスト登録を依頼
□ 本番環境では AdjustEnvironment.production に設定
まとめ
iOS 14.5以降、IDFAトラッキングが制限されたため、Google広告のコンバージョン計測には代替案が必要になった。
「Adjust使ってるしAdjust SDKアップデートすればいい」という単純な話じゃなく、以下の三点セットが必須:
- Adjust SDK v5.4.1以上 + ODMプラグイン
- Firebase SDK v11.14.0以上
- Firebase ↔ Google Ads連携
そして最後に Adjust側の手動ホワイトリスト登録。
計測が「24-48時間で反映」という遅延もある。実装後すぐに「あれ、数字が出ない」と焦らないこと。翌日以降に確認したら出てたりする。
関連記事
- FlutterアプリにAdjust SDKを導入する - Adjust SDK導入の基本
- AdjustとGoogle Play Consoleの連携設定 - Android側のセットアップ
- Adjustで課金収益を計測する(Flutter) - 収益イベント送信の詳細
- Flutterアプリ初期設定チェックリスト - 全体のセットアップ項目