支援 iOS 14

隨著 iOS 14.5 版本推出,Apple 要求開發人員透過應用程式追蹤透明度架構取得使用者權限,以便追蹤使用者或存取裝置的廣告 ID (IDFA)。詳情請參閱 Apple 的使用者隱私和資料使用方式Apple 應用程式追蹤透明度說明文件。

受影響的 Firebase 產品

雖然 Firebase SDK 無法存取廣告識別碼,但部分 SDK 已與 Google Analytics (分析) 整合,因此可能需要廣告識別碼存取權。

下表列出在 Apple 平台上提供的 Firebase 產品,並說明無法存取廣告識別碼時,各項產品的功能會受到什麼影響。

產品 無法存取廣告識別碼時的影響
A/B 測試 在與 Google Analytics (分析) 整合的 A/B 版本測試中,部分指定目標資料 (例如客層) 是衍生自 IDFA。如果應用程式無法存取廣告識別碼,就無法這個指定目標。
App Check 不受影響
應用程式發布 不受影響
驗證 驗證作業和第一方驗證服務供應商 (例如 Google 登入和電話驗證) 不會受到影響。
Crashlytics 沒有影響。Crashlytics 可以與 Google Analytics (分析) 整合,可提供即時當機資料和導覽標記,不受廣告識別碼影響。
Dynamic Links 不會影響連結開啟功能。與 Google Analytics (分析) 搭配使用時,無法歸因連結轉換事件。
Cloud Firestore 不受影響
Cloud Functions 不受影響
應用程式內通訊 不受影響
Firebase 安裝 不受影響
InstanceID 不受影響
雲端通訊 與 Google Analytics (分析) 搭配使用時,Google Analytics (分析) 會自動記錄部分與 FCM 相關的轉換事件。這些事件的歸因功能需要廣告識別碼存取權。
Firebase ML 不受影響
監控效能 不受影響
遠端設定 搭配 Google Analytics (分析) 使用時,遠端設定不允許自動建立的使用者屬性,用於在沒有廣告識別碼存取權的情況下指定目標。
即時資料庫 不受影響
Cloud Storage 不受影響
Vertex AI for Firebase 不受影響

受影響的 Firebase 整合項目

下表列出在無法存取廣告識別碼的情況下,受影響的 Firebase 整合產品。

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

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

如果您希望 Apple 應用程式存取廣告識別碼,可以在應用程式中加入 Apple 的「App 追蹤透明度」架構,並要求追蹤或存取使用者 IDFA 的權限。

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

如果您是 AdMob 或 Ad Manager 應用程式發布商,不妨考慮使用營利成長選項,這個選項可處理取得個人化廣告的同意聲明,並根據 Apple 的自動規範取得追蹤使用者的同意聲明。詳情請參閱「AdMob 同意聲明 (含使用者訊息) 頁面」。

以下指南提供使用 Firebase 應用程式內通訊的解決方案,在透過「應用程式追蹤透明度」要求追蹤存取權之前,先建立並顯示說明畫面。

在應用程式中新增通訊功能

按照操作說明將應用程式內通訊新增至 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
  }
}

建立應用程式內通訊廣告活動

將程式碼置入應用程式後,請在 Firebase 主控台建立應用程式內訊息。

  1. Firebase 主控台中,建立新的應用程式內通訊廣告活動。
  2. 使用所需內容填入應用程式內訊息,並設定在 app_launch 事件時觸發的訊息。
  3. 在「指定目標」部分中,確認廣告活動僅指定您應用程式的最新版本以上版本。

您可以按照應用程式內通訊說明文件的操作說明,自訂說明畫面的外觀。

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

應用程式內通訊內建 Firebase A/B 測試整合功能,可讓您針對不同的說明畫面進行實驗。

Firebase A/B 測試會自動建立實驗群組,協助您以視覺化方式呈現使用者與應用程式不同變化版本的互動情形。

記錄應用程式追蹤權限

如果您沒有在處理應用程式追蹤權限回應時記錄 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 (分析)」部分中,前往「轉換」選單,然後新增與上述程式碼範例記錄的事件,同名的新轉換事件。

建立新的實驗

在控制台的應用程式內通訊選單中,按一下「新增實驗」,然後按照畫面上的指示操作。

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

實驗發布後,實驗需要收集資料一段時間,才能產生決定性結果。

如要瞭解如何監控實驗及推出成功的變化版本,請參閱 Firebase A/B 測試說明文件