iOS 14 のサポート

iOS 14.5 では、ユーザーのトラッキングを行う場合、またはデバイスの広告識別子(IDFA)にアクセスする場合、App Tracking Transparency フレームワークを通じてユーザーの許可を得ることが、Apple によって求められています。詳細については、Apple のユーザーのプライバシーとデータの使用と、App Tracking Transparency に関するドキュメントをご覧ください。

影響を受ける Firebase プロダクト

Firebase SDK は IDFA にアクセスしませんが、Google アナリティクスを統合している場合、そこから IDFA にアクセスする可能性があります。

Apple プラットフォームで使用可能な Firebase プロダクトと、各プロダクトが IDFA にアクセスできない場合に受ける機能への影響を以下の表に示します。

プロダクト IDFA にアクセスできない場合の影響
A/B Testing Google アナリティクスと統合された A/B Testing では、一部のターゲティング データ(ユーザー属性など)を IDFA から得ています。IDFA にアクセスできないアプリでは、このターゲティングを利用できません。
App Check 影響なし
App Distribution 影響なし
Authentication Authentication とファーストパーティの Authentication プロバイダ(Google ログインや電話認証など)には影響しません。
Crashlytics 影響なし。Crashlytics は、リアルタイムのクラッシュ データとパンくずリストを取得するために Google アナリティクスと統合されていますが、IDFA に依存することはありません。
Dynamic Links リンクを開く機能には影響しません。Google アナリティクスとともに使用する場合は、リンク コンバージョン イベントのアトリビューションを使用できません。
Cloud Firestore 影響なし
Cloud Functions 影響なし
In-App Messaging 影響なし
Firebase インストール 影響なし
インスタンス ID 影響なし
Cloud Messaging Google アナリティクスとともに使用する場合は、FCM 関連のコンバージョン イベントが Google アナリティクスにより自動的にロギングされます。このイベントのアトリビューションを取得するには IDFA へのアクセスが必要です。
Firebase ML 影響なし
Performance Monitoring 影響なし
Remote Config Remote Config と Google アナリティクスを組み合わせて使用する場合、IDFA にアクセスすることなく、自動作成されたユーザー プロパティをターゲティング目的で使用することは許可されません。
Realtime Database 影響なし
Cloud Storage 影響なし

影響を受ける Firebase の統合

Firebase と統合されるプロダクトが IDFA にアクセスできない場合に受ける影響を次の表に示します。

プロダクト IDFA にアクセスできない場合の影響
Google アナリティクス アナリティクスのイベント ロギング、イベント レポート、コンバージョン測定は影響を受けませんが、IDFA にアクセスできない場合はアトリビューションが影響を受けます。iOS 14 に対する Google の対応について詳しくは、こちらのブログ投稿をご覧ください。

iOS 14 でのアプリ トラッキング許可のリクエスト

Apple アプリが IDFA にアクセスするためには、アプリに Apple の App Tracking Transparency フレームワークを追加し、ユーザーの IDFA をトラッキングする、またはそれにアクセスする権限をリクエストします。

多くのアプリでは、許可を求める前に準備画面(説明画面)を表示するようにしています。説明画面を使用すると、アクセス権限のリクエストの前に、アプリの IDFA 使用に関する詳しい背景情報をユーザーに伝えることができます。

AdMob またはアド マネージャーのアプリのパブリッシャーは、ファンディング チョイスの使用を検討してください。ファンディング チョイスでは、Apple のガイドラインに沿ったパーソナライズド広告の配信に対する同意の取得と、ユーザーのトラッキングに対する同意の取得が自動的に行われます。詳しくは、User Messaging における AdMob の同意に関するページをご覧ください。

以下のガイドでは Firebase In-App Messaging を使用するソリューションを紹介します。このソリューションでは、App Tracking Transparency を通じてトラッキングのアクセス権限をリクエストする前に、説明画面を作成して表示します。

アプリに In-App Messaging を追加する

このページの手順に沿って、Apple アプリに In-App Messaging を追加してください。

アプリ内メッセージの拒否を処理する

最初に、iOS 13 を搭載しているデバイスなど、同意ダイアログを表示できないデバイスでは説明画面を表示しないようにします。このコードは FirebaseApp.configure() の直後に実行してください。

Swift

if NSClassFromString("ATTrackingManager") == nil {
  // Avoid showing the App Tracking Transparency explainer if the
  // framework is not linked.
  InAppMessaging.inAppMessaging().messageDisplaySuppressed = true
}

InAppMessagingDisplayDelegate プロトコルを実装して、ユーザーが説明画面を拒否したときのイベントを処理します。ユーザーが [OK] をタップした場合は、App Tracking Transparency フレームワークを通じてシステム プロンプトを表示します。

Swift

// The InAppMessaging delegate must be assigned before events can be handled.
InAppMessaging.inAppMessaging().delegate = self

func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage,
                    with action: InAppMessagingAction) {
  switch action.actionText {
  case "OK":
    ATTrackingManager.requestTrackingAuthorization { status in
      switch status {
      case .authorized:
        // Optionally, log an event when the user accepts.
        Analytics.logEvent("tracking_authorized", parameters: nil)
      case _:
        // Optionally, log an event here with the rejected value.
      }
    }
  case _:
    // do nothing
  }
}

アプリ内メッセージング キャンペーンを作成する

このコードをアプリに入れたら、Firebase コンソールでアプリ内メッセージを作成します。

  1. Firebase コンソールで、新しいアプリ内メッセージング キャンペーンを作成します。
  2. アプリ内メッセージのコンテンツを設定し、app_launch イベントでトリガーするようにメッセージを設定します。
  3. [ターゲット設定] セクションで、キャンペーンがアプリの現在の最新バージョンおよびそれ以降のバージョンのみをターゲットにしていることを確認します。

説明画面の外観はカスタマイズできます。In-App Messaging のドキュメントをご覧ください。

オプション: A/B テストによる異なる説明画面

In-App Messaging には、Firebase A/B Testing との統合が組み込まれているため、これを使用して異なる説明画面をテストできます。

Firebase A/B Testing ではテストグループが自動的に作成され、アプリのさまざまなバリアントに対するユーザーの反応を可視化できます。

アプリのトラッキング権限を記録する

アプリのトラッキング権限に関する応答を処理するときに Google アナリティクス イベントをロギングしていない場合、A/B テストの実施時の応答率の変化を測定するために、このロギングを行う必要があります。

Swift

ATTrackingManager.requestTrackingAuthorization { status in
  switch status {
  case .authorized:
    // Optionally, log an event when the user accepts.
    Analytics.logEvent("tracking_authorized", parameters: nil)
  case _:
    // Optionally, log an event here with the rejected value.
  }
}

新しいコンバージョン イベントを作成する

Firebase コンソールの [分析] セクションの [Conversions] メニューを選択し、新しいコンバージョン イベントを追加します。名前は上記のサンプルコードでロギングするイベントと同じにします。

テストの新規作成

コンソールの [In-App Messaging] で [新しいテスト] をクリックし、画面の指示に沿って操作します。

  • [ターゲット設定] セクションで、キャンペーンがアプリの現在の最新バージョンおよびそれ以降のバージョンのみをターゲットにしていることを確認します。
  • [目標] セクションで、上記のサンプルコードで作成したコンバージョン イベントと、その他のトラッキングしたい指標を選択します。

テストを公開した後、明確な結果が生成されるまで、ある程度の期間データを収集する必要があります。

テストをモニタリングし、望ましい結果が出たバリアントをロールアウトする方法については、Firebase A/B Testing のドキュメントをご覧ください。