支持 iOS 14

在 iOS 14.5 中,Apple 要求开发者通过 App Tracking Transparency 框架征得用户的许可之后,才能跟踪这些用户或访问其设备的广告标识符 (IDFA)。如需了解详情,请参阅 Apple 的用户隐私和数据使用政策以及 Apple 的 App Tracking Transparency 文档。

受影响的 Firebase 产品

Firebase SDK 不会访问 IDFA,但有些 SDK 集成了 Google Analytics(分析),因此可能涉及到访问 IDFA。

下表列出了可在 Apple 平台上使用的 Firebase 产品,并说明了 IDFA 无法访问时各产品的功能会受到哪些影响。

产品 无法访问 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(分析)搭配使用时,如果无法访问 IDFA,Remote Config 会禁止将自动创建的用户属性用于定位。
Realtime Database 无影响
Cloud Storage 无影响

受影响的 Firebase 集成

下表列出了无法访问 IDFA 时受影响的 Firebase 集成产品。

产品 无法访问 IDFA 时受到的影响
Google Analytics(分析) Analytics(分析)事件日志记录、事件报告和转化衡量都不受影响,但如果无法访问 IDFA,归因将会受到影响。 如需详细了解 Google 对 iOS 14 的响应情况,请参阅我们的博文

在 iOS 14 上请求应用跟踪权限

如果您希望您的 Apple 应用能够访问 IDFA,则可以将 Apple 的 App Tracking Transparency 框架添加到您的应用中,并请求跟踪或访问用户的 IDFA 的权限。

许多应用会在请求权限之前选择显示铺垫性或说明性屏幕。借助说明性屏幕,您可以在请求访问权限前为用户提供有关应用如何使用 IDFA 的更多背景信息。

如果您是 AdMob 或 Ad Manager 应用发布商,请考虑使用资助选项,该服务会自动根据 Apple 的准则处理针对投放个性化广告以及在跟踪用户前征得用户同意的事宜。如需了解详情,请参阅有关借助用户消息功能征得用户同意的 AdMob 页面

以下指南提供了在通过 App Tracking Transparency 请求跟踪权限前使用 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 协议,以在用户关闭说明性屏幕时处理事件。如果用户点按“确定”,请通过 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
  }
}

制作 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 控制台的分析部分,导航到“Conversions”菜单,然后添加与使用上述示例代码记录的事件同名的新转化事件。

创建新实验

在控制台的 In-App Messaging 菜单中,点击新建实验,然后按照显示的屏幕上的说明进行操作。

  • “定位”部分,确保广告系列仅定位到您的应用的最新版本及更高版本。
  • 在“目标”部分,选择使用上述示例代码创建的转化事件,以及您想要跟踪的其他任何指标。

发布实验后,您需要收集一段时间内的数据,然后才能得出确定性结果。

请阅读 Firebase A/B Testing 文档,了解如何监控实验和发布成功的变体。