自 iOS 14.5 起,Apple 要求開發人員必須透過應用程式追蹤透明度架構,取得使用者授權,才能追蹤使用者或存取裝置的廣告 ID (IDFA)。詳情請參閱 Apple 的使用者隱私權和資料使用和應用程式追蹤透明度說明文件。
受影響的 Firebase 產品
Firebase SDK 不會存取廣告識別碼,但部分 SDK 與 Google Analytics 整合,可能會存取廣告識別碼。
下表列出 Apple 平台可用的 Firebase 產品,並說明無法存取廣告識別碼時,各項產品的功能會受到什麼影響。
| 產品 | 無法存取廣告識別碼的影響 |
|---|---|
| A/B Testing | A/B Testing 與 Google Analytics 整合後,部分指定目標資料 (例如客層) 會衍生自廣告識別碼。如果應用程式無法存取廣告識別碼,就無法使用這項指定目標。 |
| 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 | 不會,Crashlytics 與 Google Analytics 的整合功能可提供即時當機資料和導覽標記,不依賴廣告識別碼。 |
| In-App Messaging | 沒有影響 |
| Firebase 安裝作業 | 沒有影響 |
| Performance Monitoring | 沒有影響 |
| Realtime Database | 沒有影響 |
| Remote Config | 與 Google Analytics 搭配使用時,Remote Config 不允許在沒有廣告識別碼存取權的情況下,使用自動建立的使用者屬性進行指定。 |
| 已淘汰或不支援的程式庫 | |
| Dynamic Links | 連結開啟功能不受影響。與 Google Analytics 搭配使用時,無法歸因連結轉換事件。 |
| InstanceID | 沒有影響 |
| Firebase ML | 沒有影響 |
1 Firebase AI Logic 舊稱為「Vertex AI in Firebase」。
受影響的 Firebase 整合
下表列出無法存取廣告識別碼時,會受到影響的 Firebase 整合產品。
| 產品 | 無法存取廣告識別碼的影響 |
|---|---|
| Google Analytics | Analytics 事件記錄、事件報表和轉換評估不受影響,但如果無法存取廣告識別碼,歸因就會受到影響。如要進一步瞭解 Google 對 iOS 14 的因應措施,請參閱我們的網誌文章。 |
在 iOS 14 上要求應用程式追蹤權限
如要讓 Apple 應用程式存取廣告識別碼,請在應用程式中加入 Apple 的應用程式追蹤透明度架構,並要求追蹤或存取使用者廣告識別碼的權限。
許多應用程式會選擇在要求權限前,先顯示準備或說明畫面。您可透過解說畫面,向使用者進一步說明應用程式如何使用廣告識別碼,再要求存取權。
如果您是 AdMob 或 Ad Manager 應用程式發布商,建議使用營利成長選項,自動取得放送個人化廣告的同意聲明,以及根據 Apple 指南追蹤使用者的同意聲明。詳情請參閱「AdMob Consent with User Messaging」頁面。
下列指南提供使用 Firebase In-App Messaging 的解決方案,說明如何建立及顯示說明畫面,再透過應用程式追蹤透明度 (ATT) 提示要求追蹤權限。
在應用程式中新增 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 控制台中建立應用程式內訊息。
- 在 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」部分,前往「Conversions」(轉換) 選單,然後新增轉換事件,名稱與上述程式碼範例記錄的事件相同。
建立新的實驗
在控制台的「In-App Messaging」選單中,按一下「New Experiment」(新實驗),然後按照後續畫面上的指示操作。
- 在「Targeting」部分,確認廣告活動只指定最新版應用程式。
- 在「Goals」(目標) 部分,選取您使用上述程式碼範例建立的轉換事件,以及要追蹤的其他指標。
實驗發布後,需要收集一段時間的資料,才能產生決定性結果。
請參閱 Firebase A/B Testing 說明文件,瞭解如何監控實驗及推出成功的變化版本。