支援 iOS 14

自 iOS 14.5 起,Apple 規定開發人員必須透過「應用程式追蹤透明度」架構取得使用者授權,才能追蹤使用者或存取裝置的廣告識別碼 (IDFA)。詳情請參閱 Apple 的使用者隱私權和資料使用,以及 Apple 的應用程式追蹤資訊公開說明文件。

受影響的 Firebase 產品

Firebase SDK 不會存取 IDFA,但部分 SDK 與 Google Analytics 整合時可能會存取 IDFA。

下表列出 Apple 平台上可用的 Firebase 產品,並說明無法存取 IDFA 時,各產品的功能會受到哪些影響。

Product 無法存取廣告識別碼時的影響
A/B Testing A/B TestingGoogle Analytics 整合時,系統會根據 IDFA 取得部分指定目標資料 (例如客層)。如果應用程式無法存取廣告 ID,就無法使用這項指定目標。
Firebase AI Logic 1 沒有影響
App Check 沒有影響
App Distribution 沒有影響
Authentication 不會影響 Authentication 和第一方 Authentication 提供者,例如 Google 登入和電話驗證。
Cloud Firestore 沒有影響
Cloud Functions 沒有影響
Cloud Messaging Google Analytics 搭配使用時,Google Analytics 會自動記錄部分 FCM 相關的轉換事件。如要歸因這些事件,必須取得 IDFA 存取權。
Cloud Storage 沒有影響
Crashlytics 沒有影響。CrashlyticsGoogle Analytics 的整合功能可提供即時當機資料和追蹤路徑,但這項功能不需使用 IDFA。
Dynamic Links 開啟連結的功能不受影響。如果搭配使用 Google Analytics,系統就無法為連結轉換事件進行歸因。
In-App Messaging 沒有影響
Firebase 安裝次數 沒有影響
InstanceID 沒有影響
Firebase ML 沒有影響
Performance Monitoring 沒有影響
Realtime Database 沒有影響
Remote Config Google Analytics 搭配使用時,Remote Config 不允許在無法存取廣告識別碼的情況下,自動建立使用者屬性以指定目標。

1 Firebase AI Logic 以前稱為「Vertex AI in Firebase

受影響的 Firebase 整合

下表列出 IDFA 無法存取時,會受到影響的 Firebase 整合式產品。

Product 無法存取廣告識別碼時的影響
Google Analytics Analytics 事件記錄、事件報表和轉換評估不受影響,但如果無法存取 IDFA,歸因就會受到影響。如要進一步瞭解 Google 對 iOS 14 的因應措施,請參閱我們的網誌文章

在 iOS 14 中要求應用程式追蹤權限

如要讓 Apple 應用程式存取廣告識別碼,請在應用程式中加入 Apple 的「應用程式追蹤透明度」架構,並要求追蹤或存取使用者廣告識別碼的權限。

許多應用程式會先顯示暖身 (解說) 畫面,再要求權限。透過解說畫面,您可向使用者進一步說明應用程式如何使用廣告識別碼,再要求存取權。

如果您是 AdMob 或 Ad Manager 應用程式發布商,建議使用營利成長選項,系統會自動根據 Apple 的指南,處理取得同意聲明事宜,包括放送個人化廣告,以及追蹤使用者。詳情請參閱「AdMob透過使用者訊息取得同意聲明」頁面。

下列指南提供的解決方案使用 Firebase In-App Messaging,可在透過「應用程式追蹤透明度」要求追蹤存取權前,建立並顯示解說畫面。

在應用程式中新增 In-App Messaging

按照操作說明將 In-App Messaging 新增至 Apple 應用程式

處理應用程式內訊息關閉事件

首先,請避免在無法顯示同意聲明對話方塊的裝置上顯示說明畫面,例如搭載 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 通訊協定,處理使用者關閉說明畫面時的事件。如果使用者輕觸「確定」,請透過「應用程式追蹤透明度」架構顯示系統提示。

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
  }
}

建立In-App Messaging廣告活動

在應用程式中加入程式碼後,請在 Firebase 控制台中建立應用程式內訊息。

  1. Firebase 控制台中,建立新的 In-App Messaging 廣告活動。
  2. 在應用程式內訊息中填入所需內容,並將訊息設為在 app_launch 事件觸發時顯示。
  3. 在「指定目標」部分,確認廣告活動只指定應用程式的最新版本和更新版本。

如要自訂說明畫面外觀,請按照 In-App Messaging 說明文件中的指示操作。

選用:對不同的說明畫面進行 A/B 測試

In-App Messaging 內建與 Firebase A/B Testing 的整合功能,可用於實驗不同的說明畫面。

Firebase A/B Testing 會自動建立實驗群組,並協助您直觀呈現使用者與不同應用程式變體的互動情形。

記錄應用程式追蹤權限

如果您在處理應用程式追蹤權限回應時,未記錄 Google Analytics 事件,則必須記錄,才能在執行 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 控制台的「Analytics」部分,前往「轉換」選單,然後新增轉換事件,並使用與上述範例程式碼記錄事件相同的名稱。

建立新的實驗

在控制台的In-App Messaging選單中,按一下「New Experiment」(新實驗),然後按照畫面上的指示操作。

  • 在「指定目標」部分,確認廣告活動只指定應用程式的最新版本和更新版本。
  • 在「目標」部分,選取您使用上述範例程式碼建立的轉換事件,以及要追蹤的任何其他指標。

發布實驗後,系統需要一段時間才能收集到足夠資料,進而產生明確的結果。

請參閱Firebase A/B Testing說明文件,瞭解如何監控實驗及推出成效良好的變體。