技術 約8分で読めます

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アップデートすればいい」と思ってた。

でも、実際に必要なのは:

  1. Adjust SDK v5.4.1以上にアップデート
  2. Adjust ODMプラグインを追加(Google On-Device Measurement用)
  3. Firebase SDK v11.14.0以上を導入
  4. Firebase ↔ Google Ads連携を設定
  5. 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側の設定(管理画面):

  1. Google Ads にログイン
  2. 「ツール」→「コンバージョン」
  3. 新規コンバージョンアクションを作成、またはAndroid用を複製してiOS版を作成
  4. ソースを「Google Analytics for Firebase」に設定
  5. 対応するFirebaseイベント(例:purchase)を選択

5. Adjust側のGoogle Ads連携設定

Adjust管理画面で以下を実施:

  1. パートナー設定Google Ads を有効化
  2. Google Ads側で発行したコンバージョンのトークンをAdjustに登録
  3. 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アップデートすればいい」という単純な話じゃなく、以下の三点セットが必須:

  1. Adjust SDK v5.4.1以上 + ODMプラグイン
  2. Firebase SDK v11.14.0以上
  3. Firebase ↔ Google Ads連携

そして最後に Adjust側の手動ホワイトリスト登録。

計測が「24-48時間で反映」という遅延もある。実装後すぐに「あれ、数字が出ない」と焦らないこと。翌日以降に確認したら出てたりする。

関連記事

参考リンク