チュートリアル: iOS 広告のコンバージョンを測定する

ステップ 3: Google Analytics を使用してオンデバイス コンバージョン測定を開始する


はじめに: iOS 広告コンバージョンを測定する

ステップ 1: ログイン エクスペリエンスを実装する

ステップ 2: Google Analytics を統合する

ステップ 3: Google Analytics を使用してオンデバイス コンバージョン測定を開始する

ステップ 4: 一般的な問題のトラブルシューティングと対処


ユーザーのメールアドレスと電話番号を収集できるようになり、アプリに Firebase SDK の Google Analytics があるので、この 2 つを使用してコンバージョンの測定を開始できます。

API の呼び出し

ステップ 1 で同意を得たメールアドレスまたは電話番号を使用してコンバージョン測定 API を呼び出します。この API は広告のコンバージョン測定に使用され、個人を特定できる情報がユーザーのデバイスから漏洩することはありません。

測定を開始するには、次の 2 つの方法があります。

メールアドレスまたは電話番号を使用する

Swift

FirebaseAnalytics モジュールをインポートし、メールアドレスまたは電話番号を initiateOnDeviceConversionMeasurement() API に渡します。

import FirebaseAnalytics

// ...
// If you're using an email address....
Analytics.initiateOnDeviceConversionMeasurement(emailAddress: "example@gmail.com")
// If you're using a phone number....
Analytics.initiateOnDeviceConversionMeasurement(phoneNumber: "+15555555555")

Objective-C

FirebaseAnalytics モジュールをインポートし、メールアドレスを initiateOnDeviceConversionMeasurementWithEmailAddress: API に、電話番号を initiateOnDeviceConversionMeasurementWithPhoneNumber: API に渡します。

@import FirebaseAnalytics;

// ...
// If you're using an email address....
[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:@"example@gmail.com"];
// If you're using a phone number....
[FIRAnalytics initiateOnDeviceConversionMeasurementWithPhoneNumber:@"+15555555555"];

Unity

Firebase.Analytics 名前空間をインポートし、InitiateOnDeviceConversionMeasurementWithEmailAddress() API にメールアドレスを、InitiateOnDeviceConversionMeasurementWithPhoneNumber() API に電話番号を渡します。

using Firebase.Analytics;

// ...
// If you're using an email address....
FirebaseAnalytics.InitiateOnDeviceConversionMeasurementWithEmailAddress("example@gmail.com");
// If you're using a phone number....
FirebaseAnalytics.InitiateOnDeviceConversionMeasurementWithPhoneNumber("+15555555555");

API 呼び出しのベスト プラクティス

オンデバイスのコンバージョン測定を正確かつ継続的に行うには、次のいずれかを行います。

Firebase SDK バージョン 12.1.0 以降の Google Analytics には、オンデバイスのコンバージョン測定の改善が含まれています。アプリの更新前にすでにログインしているユーザーを含むすべてのユーザーにこれらの改善を適用するには、アプリの更新後に initiateOnDeviceConversionMeasurement API を再度呼び出すことが重要です。

具体的には、アプリが SDK バージョン 12.1.0 に更新される前にログインしたユーザーは、そのユーザーに対して initiateOnDeviceConversionMeasurement API が再度呼び出されるまで、拡張計測の範囲に含まれません。アプリの更新チェックがない場合、この処理はユーザーがログアウトして再度ログインした場合にのみ行われます。

ベスト プラクティスは、アプリのバージョンごとに少なくとも 1 回はログイン ユーザーの API を呼び出すことです。アプリの起動時にチェックを実装して、前回の呼び出し以降にアプリのバージョンが変更された場合にのみ API を呼び出すことができます。

Swift

// On app launch if the app version has changed, call the API with the first-party data
// (for example: email address, phone number, hashed email address, hashed phone number).
let cachedAppVersion = UserDefaults.standard.string(forKey: "cachedAppVersion")
let currentAppVersion =
  Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String

if cachedAppVersion != currentAppVersion {
let hashedEmailAddress = ...
Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: hashedEmailAddress)
UserDefaults.standard.set(currentAppVersion, forKey: "cachedAppVersion")
}

Objective-C

// On app launch if the app version has changed, call the API with the first-party data
// (for example: email address, phone number, hashed email address, hashed phone number).
NSString *cachedAppVersion =
  [[NSUserDefaults standardUserDefaults] stringForKey:@"cachedAppVersion"];
NSString *currentAppVersion = [[NSBundle mainBundle]
  objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

if (![cachedAppVersion isEqualToString:currentAppVersion]) {
NSString *hashedEmailAddress = ...
[FIRAnalytics initiateOnDeviceConversionMeasurementWithHashedEmailAddress:hashedEmailAddress];
[[NSUserDefaults standardUserDefaults] setObject:currentAppVersion
                                          forKey:@"cachedAppVersion"];
}

Unity

// On app launch if the app version has changed, call the API with the first-party data
// (for example: email address, phone number, hashed email address, hashed phone number).
string cachedAppVersion = PlayerPrefs.GetString("cached_app_version", "");
string currentAppVersion = Application.version;

if (cachedAppVersion != currentAppVersion) {
byte[] hashedEmailAddress = ...
FirebaseAnalytics.InitiateOnDeviceConversionMeasurementWithHashedEmailAddress(
    hashedEmailAddress);
PlayerPrefs.SetString("cached_app_version", currentAppVersion);
PlayerPrefs.Save();
}

ログイン直後に電話する

ユーザーがメールアドレスまたは電話番号でログインまたは登録に成功した直後に、必ず initiateOnDeviceConversionMeasurement API を呼び出してください。

新規登録のタイミングに関する考慮事項

ユーザーが登録した直後にキー コンバージョン イベントが発生する場合(API を呼び出す場合)は、API 呼び出しとキーイベントのロギングの間に少し遅延(5 秒など)を実装することを検討してください。これにより、イベントが記録される前にデバイス上の測定が完全に初期化されます。

ハッシュ化されたメールアドレスまたは電話番号を使用する

API は、SHA256 でハッシュ化されたメールアドレスと電話番号を受け入れます。SDK を呼び出す前にコードでハッシュ化を実行することで、ユーザーのデータを管理できます。

ハッシュ化された認証情報を使用するには、住所と電話番号を正規化し、SHA256 でハッシュ化してから、API を呼び出します。

メールアドレスと電話番号を正規化する

メールアドレスの場合、Google Analytics API は SHA256 が適用される前に特定の正規化が実行されることを前提としているため、次の手順に沿ってデータを正規化します。

  1. メールアドレス全体を小文字に変換します。

  2. メールアドレスの末尾がドメイン @googlemail.com の場合は、@googlemail.com ドメインを @gmail.com に置き換えます。

  3. ドメイン @gmail.com で終わるアドレスの場合(前の手順で変更されたアドレスを含む):

    1. ユーザー名の部分からすべてのピリオドを削除します。

    2. ユーザー名部分を次のように置き換えます。

      • 文字 I または i、数字 1 は文字 l に置き換えます
      • 数字の 0 はアルファベットの o に置き換えます
      • 2 桁目の数字は文字 z に置き換えます
      • 数字の 5 は文字の s に置き換えます。

たとえば、正規化後:

  • an.email.user0125@googlemail.comanemalluserolzs@gmail.com になる
  • CAPSUSER0125@provider.netcapsuser0125@provider.net になる

電話番号の場合、SHA256 でハッシュ化する前に、番号がすでに E.164 形式(先頭に「+」、国コード 1 ~ 3 桁、加入者番号最大 12 桁)になっている必要があります。

ハッシュ化された SHA256 メールアドレスまたは電話番号は、16 進数文字列ではなく、32 バイトの長さにする必要があります。

ハッシュ化された認証情報を使用して API を呼び出す

Swift

FirebaseAnalytics モジュールをインポートし、メールアドレスまたは電話番号を initiateOnDeviceConversionMeasurement() API に渡します。

import FirebaseAnalytics

// ...
// If you're using an email address....
Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: hashedEmailAddress)
// If you're using a phone number....
Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: hashedPhoneNumber)

Objective-C

FirebaseAnalytics モジュールをインポートし、メールアドレスを initiateOnDeviceConversionMeasurementWithHashedEmailAddress: API に、電話番号を initiateOnDeviceConversionMeasurementWithHashedPhoneNumber: API に渡します。

@import FirebaseAnalytics;

// ...
// If you're using an email address....
[FIRAnalytics initiateOnDeviceConversionMeasurementWithHashedEmailAddress:hashedEmailAddress];
// If you're using a phone number....
[FIRAnalytics initiateOnDeviceConversionMeasurementWithHashedPhoneNumber:hashedPhoneNumber];

Unity

Firebase.Analytics 名前空間をインポートし、メールアドレスを InitiateOnDeviceConversionMeasurementWithHashedEmailAddress() API に、電話番号を InitiateOnDeviceConversionMeasurementWithHashedPhoneNumber() API に渡します。

using Firebase.Analytics;

// ...
// If you're using an email address....
FirebaseAnalytics.InitiateOnDeviceConversionMeasurementWithHashedEmailAddress(hashedEmailAddress);
// If you're using a phone number....
FirebaseAnalytics.InitiateOnDeviceConversionMeasurementWithHashedPhoneNumber(hashedPhoneNumber);

インテグレーションを検証する

デバッグモードを有効にします。測定開始 API を呼び出した後、Xcode デバッグ コンソールに次のようなログメッセージが表示されることを確認します。

[FirebaseAnalytics][I-ACS023225] Initiated on-device conversion measurement

デバッグモードを有効にして -DebugOnDeviceConversionMeasurement 起動引数を含めた場合、initiateOnDeviceConversionMeasurement() API を呼び出すと、一致がシミュレートされます。

[FirebaseAnalytics][I-ACS023229] On-device conversion measurement found a match




ステップ 2: Google Analytics を統合する ステップ 4: 一般的な問題のトラブルシューティングと処理を行う