在 iOS 14.5 中,Apple 要求開發人員透過「應用程式追蹤透明度」架構取得使用者許可,才能追蹤使用者或存取其裝置的廣告識別碼 (IDFA)。詳情請參閱 Apple 的「使用者隱私權和資料使用」和 Apple 的「應用程式追蹤資訊公開」說明文件。
受影響的 Firebase 產品
Firebase SDK 不會存取 IDFA,但部分 SDK 會整合 Google Analytics,因此可能會涉及 IDFA 存取權。
下表列出 Apple 平台上可用的 Firebase 產品,並說明在無法存取 IDFA 的情況下,各產品的功能會受到哪些影響。
產品 | 無法存取廣告識別碼時的影響 |
---|---|
A/B Testing | A/B Testing 與 Google Analytics 整合時,部分指定資料 (例如客層) 會取自 IDFA。在無法存取 IDFA 的應用程式中,無法使用這項指定目標功能。 |
App Check | 沒有影響 |
App Distribution | 沒有影響 |
Authentication | Authentication 和第一方 Authentication 供應商 (例如 Google 登入和電話驗證) 不會受到影響。 |
Crashlytics | 沒有影響。Crashlytics 與 Google Analytics 的整合功能可提供即時錯誤資料和麵包屑,不依賴 IDFA。 |
Dynamic Links | 連結開啟功能不受影響。與 Google Analytics 搭配使用時,系統無法為連結轉換事件進行歸因。 |
Cloud Firestore | 沒有影響 |
Cloud Functions | 沒有影響 |
In-App Messaging | 沒有影響 |
Firebase 安裝次數 | 沒有影響 |
InstanceID | 沒有影響 |
Cloud Messaging | 與 Google Analytics 搭配使用時,Google Analytics 會自動記錄部分 FCM 相關轉換事件。如要為這些事件進行歸因,就必須取得 IDFA 存取權。 |
Firebase ML | 沒有影響 |
Performance Monitoring | 沒有影響 |
Remote Config | 與 Google Analytics 搭配使用時,Remote Config 不允許自動建立的使用者屬性,用於指定目標,除非有廣告識別碼存取權。 |
Realtime Database | 沒有影響 |
Cloud Storage | 沒有影響 |
Vertex AI in Firebase | 沒有影響 |
受影響的 Firebase 整合
下表列出在無法存取 IDFA 時,會受到影響的整合 Firebase 產品。
產品 | 無法存取廣告識別碼時的影響 |
---|---|
Google Analytics | Analytics 事件記錄、事件報表和轉換評估不會受到影響,但如果無法存取 IDFA,歸因就會受到影響。如要進一步瞭解 Google 對 iOS 14 的回應,請參閱我們的網誌文章。 |
在 iOS 14 上要求應用程式追蹤權限
如果您希望 Apple 應用程式能夠存取 IDFA,可以將 Apple 的「應用程式追蹤透明度」架構新增至應用程式,並要求存取或追蹤使用者 IDFA 的權限。
許多應用程式會在要求權限前,先顯示暖身 (解說) 畫面。透過解說畫面,您可向使用者進一步說明應用程式如何使用廣告識別碼,再要求存取權。
如果您是 AdMob 或 Ad Manager 應用程式發布商,建議您使用營利成長選項,這項功能會根據 Apple 的規範,自動取得放送個人化廣告的同意聲明,以及追蹤使用者的同意聲明。詳情請參閱「AdMob 使用者訊息同意聲明」頁面。
以下指南提供使用 Firebase In-App Messaging 的解決方案,可在透過 App Tracking Transparency 要求追蹤存取權之前,建立及顯示解說畫面。
在應用程式中新增 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
通訊協定,以便在使用者關閉說明畫面時處理事件。如果使用者輕觸「OK」,請透過應用程式追蹤透明度架構顯示系統提示。
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 主控台中建立應用程式內訊息。
- 在 Firebase 主控台中,建立新的 In-App Messaging 廣告活動。
- 在應用程式內訊息中填入所需內容,並將訊息設為在
app_launch
事件中觸發。 - 在「指定目標」部分中,確認廣告活動只指定應用程式的最新版本和更高版本。
您可以按照 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 說明文件,瞭解如何監控實驗並推出成功的變化版本。