IDFA:是什么、如何工作以及在iOS中请求权限

作者: IT Sectr 发布日期: 2026-05-22 阅读时间: 8 分钟

IDFA(Identifier for Advertisers)—是iOS中用于广告目的和安装归因的唯一设备标识符。随着iOS 14.5中App Tracking Transparency(ATT)的出现,获取IDFA需要用户通过系统对话框明确同意。根据Apple App Tracking Transparency Documentation, 2025,未经ATT许可,应用程序将收到零标识符。App Tracking Transparency从根本上改变了移动广告生态系统,实施后IDFA的可用性降低了80%。

要点

  • IDFA—用于跟踪用户和应用安装归因的iOS广告标识符。
  • App Tracking Transparency—Apple框架,要求在获取IDFA之前获得用户的明确同意。
  • ATTrackingManager—通过requestTrackingAuthorization请求跟踪权限的主要iOS类。
  • SKAdNetwork—Apple的替代归因机制,不需要IDFA和用户同意。
  • Privacy Manifest—iOS 18+必需文件,声明使用广告标识符的原因。

什么是IDFA?

IDFA(Identifier for Advertisers)—是分配给每个Apple设备的唯一字母数字标识符,用于广告目的。与IDFV(Identifier for Vendor)不同,IDFA对设备上的所有应用程序是统一的,用户可以随时通过设置—隐私—广告—重置标识符进行重置。

IDFA的主要目的是安装归因和在Apple设备上跟踪广告活动的有效性。广告网络使用IDFA将广告点击与应用安装关联起来,构建用户资料并展示个性化广告。自ATT实施以来,根据各分析平台的不同估计,提供IDFA访问权限的用户比例平均为20–35%。

根据Flurry Analytics(2025)的数据,iOS 18之后ATT的采用率上升到活跃设备的92%,但同意跟踪的用户比例下降到22%。这导致了移动广告行业的根本性转变,迫使广告网络寻找替代的归因方法。

关键特性IDFA—不包含用户的个人数据,不与Apple ID关联。然而,Apple将其归类为受App Tracking Transparency监管的标识符。

IDFA和App Tracking Transparency如何工作

App Tracking Transparency(ATT)—是Apple在iOS 14.5中引入的框架,要求在读取IDFA之前获得用户的明确同意。未经同意,asIdentifierManager方法返回零标识符(00000000-0000-0000-0000-000000000000),应用程序无法跟踪用户。

App Tracking Transparency框架

ATT通过ATTrackingManager类实现,其唯一的公共方法是requestTrackingAuthorization(completionHandler:)。调用此方法时,系统会显示一个原生对话框,其中包含开发人员通过Info.plist中的NSUserTrackingUsageDescription键设置的文本。用户可以从三个选项中选择一个:“允许跟踪”、“要求应用程序不跟踪”或“拒绝”。

授权状态通过ATTrackingManager.trackingAuthorizationStatus跟踪,可以取四个值:notDetermined、restricted、denied或authorized。在请求ATT之前,建议检查当前状态,如果状态已确定,则不调用对话框—从iOS 17开始,在denied状态下重新调用requestTrackingAuthorization不会显示对话框并返回错误。

何时请求权限

ATT请求的时间严重影响同意率。Singular(2025)的研究表明,在引导屏幕上(首次启动时)请求ATT的转化率为35–45%,而在完成某个操作后(例如注册后)请求则会将转化率提高到55–65%。建议在系统ATT对话框之前显示一个预授权屏幕,使用自己的设计并向用户解释跟踪的价值。

重要提示:应用程序在收到响应之前只能调用requestTrackingAuthorization一次。用户选择“拒绝”或“要求不跟踪”后,对话框将不再在设备上显示。开发人员应提供无IDFA工作的后备机制,以便应用程序在有限的跟踪条件下继续正常运行。

iOS 18+对跟踪的要求

随着iOS 18的发布,Apple加强了对使用广告标识符的应用程序的要求。所有请求IDFA或为广告目的传输设备数据的应用程序必须遵守App Store的新规则。不遵守要求将导致在App Store Connect审核阶段被拒绝。

Privacy Manifest和跟踪

从iOS 18开始,每个应用程序必须包含Privacy Manifest(privacy.xcprivacy文件),声明所有用于跟踪的API。对于IDFA,使用NSPrivacyTracking和NSPrivacyTrackingDomains键,其中指定接收标识符的广告网络域名。如果没有正确的清单,应用程序将在App Store Connect审核中被拒绝。

Apple还要求在应用程序描述中强制说明使用广告标识符的原因。如果应用程序使用IDFA进行安装归因,则必须使用SKAdNetwork作为主要方法,而IDFA仅作为提高归因准确性的附加信号。

IDFA的替代方案

随着对IDFA的限制日益增加,行业开发了几种替代方法。SKAdNetwork(StoreKit Ad Network)—是Apple的官方归因机制,无需IDFA即可工作,并且不需要用户同意。SKAdNetwork使用广告网络和App Store之间经过签名的postback请求,保证用户隐私。

其他替代方案包括:基于IP地址、操作系统版本和其他设备信号的概率归因;私有聚合API,如WebKit的Private Click Measurement(PCM);以及广告平台使用机器学习预测转化的专有解决方案。对于中国市场,还使用基于运营商移动网络数据的CAID(蜂窝广告ID)。

请求IDFA的代码示例

实施IDFA请求需要集成App Tracking Transparency并正确处理所有可能的授权状态。以下是一个带有预授权屏幕的Swift完整示例。

在Swift中请求ATT

示例展示了IDFA的完整工作周期:检查状态、显示预授权屏幕、调用系统ATT对话框以及在授权后获取标识符。

swift
import AppTrackingTransparency
import AdSupport

func requestIDFAAccess() {
    let status = ATTrackingManager.trackingAuthorizationStatus

    switch status {
    case .notDetermined:
        // 显示带有解释的预授权屏幕
        showPrePermissionScreen { accepted in
            guard accepted else { return }
            ATTrackingManager.requestTrackingAuthorization { newStatus in
                handleATTStatus(newStatus)
            }
        }
    case .authorized:
        // 用户已同意—获取IDFA
        let idfa = ASIdentifierManager.shared().advertisingIdentifier
        print("IDFA: \(idfa.uuidString)")
    case .denied, .restricted:
        // 将用户重定向到设置
        redirectToSettings()
    @unknown default:
        break
    }
}

private func handleATTStatus(status: ATTrackingManager.AuthorizationStatus) {
    if status == .authorized {
        let idfa = ASIdentifierManager.shared().advertisingIdentifier
        // 将IDFA传递给广告网络
        sendIDFAToAdNetwork(idfa.uuidString)
    }
}

无IDFA的工作策略

由于大多数用户拒绝ATT请求,开发人员需要一套策略来在没有标识符的情况下有效工作。主要方法是结合SKAdNetwork和概率归因方法。

SKAdNetwork和归因

SKAdNetwork(SKAN)—是Apple用于安装归因的框架,不需要IDFA,也不显示同意对话框。广告网络在应用程序的Info.plist中注册其SKAdNetwork ID,安装后App Store会发送带有活动信息的签名postback。在iOS 17中引入的SKAN 4.0支持multiple conversions、source identifiers和coarse-grained conversion values。

SKAN的限制:postback延迟24到48小时,缺少用户标识符,转换值数量有限(最多64个)。尽管如此,SKAN已成为ATT实施后iOS归因的事实标准,所有大型广告网络必须支持它在Apple设备上工作。

预测标识符

MetaGoogle等广告网络开发了基于机器学习的专有解决方案,可以在没有用户标识符的情况下预测转化。Meta Aggregated Events Measurement(AEM)使用聚合数据进行归因,而Google Attribution基于历史数据建模转化。

对于开发人员来说,同时实施多种归因方法很重要:SKAdNetwork作为主要方法,通过广告网络进行服务器归因,以及带有转化建模的自有分析工具。方法的组合可以恢复IDFA时代高达70–80%的归因准确性。建议在beta测试阶段测试不同的方法组合,以便为特定应用和目标受众选择最佳方案。

常见问题解答

简单来说IDFA是什么?

IDFA—是iPhone或iPad设备的唯一代码,广告网络用于展示个性化广告和衡量活动有效性。自iOS 14.5起,应用程序必须通过App Tracking Transparency系统对话框请求权限才能获取IDFA。

IDFA和IDFV有什么区别?

IDFV(Identifier for Vendor)—是设备上同一开发者的所有应用程序唯一的标识符。与IDFA不同,IDFV不需要ATT同意,始终可用。IDFA对所有应用程序是统一的,而IDFV仅适用于一个供应商的应用程序(基于bundle ID)。

如何在没有用户同意的情况下获取IDFA?

未经用户同意获取IDFA是不可能的。从iOS 14.5开始,如果用户未通过ATT给予同意,ASIdentifierManager.advertisingIdentifier返回零标识符(00000000-0000-0000-0000-000000000000)。唯一合法的方法是调用ATTrackingManager.requestTrackingAuthorization并获取authorized状态。

什么是NSUserTrackingUsageDescription?

NSUserTrackingUsageDescription—是应用程序Info.plist中的一个键,包含在系统ATT对话框中显示的文本。文本应向用户解释为什么应用程序需要跟踪。例如:“您的IDFA用于展示个性化广告和衡量活动有效性”。

IDFA在Android上有效吗?

不,IDFA是Apple生态系统的专有标识符。在Android上使用GAID(Google Advertising ID)或AAID(Android Advertising ID)。两者功能相似,但受不同规则约束—在Android上,用户可以重置标识符或在Google设置中关闭广告个性化。

总结

  • IDFA—Apple设备的广告标识符,用于归因和个性化广告。
  • App Tracking Transparency—iOS 14.5+框架,要求用户在获取IDFA之前明确同意。
  • ATTrackingManager—在iOS中请求跟踪权限的主要类。
  • SKAdNetwork—Apple的替代归因机制,无需用户同意和IDFA。
  • Privacy Manifest—iOS 18+必需文件,声明使用广告标识符的原因。
  • 预授权屏幕—在系统ATT之前带有解释的自有对话框,将转化率提高到55–65%。
  • 多重归因—结合SKAdNetwork、概率方法和机器学习,恢复活动衡量准确性。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读