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(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监管的标识符。
App Tracking Transparency(ATT)—是Apple在iOS 14.5中引入的框架,要求在读取IDFA之前获得用户的明确同意。未经同意,asIdentifierManager方法返回零标识符(00000000-0000-0000-0000-000000000000),应用程序无法跟踪用户。
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的发布,Apple加强了对使用广告标识符的应用程序的要求。所有请求IDFA或为广告目的传输设备数据的应用程序必须遵守App Store的新规则。不遵守要求将导致在App Store Connect审核阶段被拒绝。
从iOS 18开始,每个应用程序必须包含Privacy Manifest(privacy.xcprivacy文件),声明所有用于跟踪的API。对于IDFA,使用NSPrivacyTracking和NSPrivacyTrackingDomains键,其中指定接收标识符的广告网络域名。如果没有正确的清单,应用程序将在App Store Connect审核中被拒绝。
Apple还要求在应用程序描述中强制说明使用广告标识符的原因。如果应用程序使用IDFA进行安装归因,则必须使用SKAdNetwork作为主要方法,而IDFA仅作为提高归因准确性的附加信号。
随着对IDFA的限制日益增加,行业开发了几种替代方法。SKAdNetwork(StoreKit Ad Network)—是Apple的官方归因机制,无需IDFA即可工作,并且不需要用户同意。SKAdNetwork使用广告网络和App Store之间经过签名的postback请求,保证用户隐私。
其他替代方案包括:基于IP地址、操作系统版本和其他设备信号的概率归因;私有聚合API,如WebKit的Private Click Measurement(PCM);以及广告平台使用机器学习预测转化的专有解决方案。对于中国市场,还使用基于运营商移动网络数据的CAID(蜂窝广告ID)。
实施IDFA请求需要集成App Tracking Transparency并正确处理所有可能的授权状态。以下是一个带有预授权屏幕的Swift完整示例。
示例展示了IDFA的完整工作周期:检查状态、显示预授权屏幕、调用系统ATT对话框以及在授权后获取标识符。
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)
}
}
由于大多数用户拒绝ATT请求,开发人员需要一套策略来在没有标识符的情况下有效工作。主要方法是结合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设备上工作。
Meta和Google等广告网络开发了基于机器学习的专有解决方案,可以在没有用户标识符的情况下预测转化。Meta Aggregated Events Measurement(AEM)使用聚合数据进行归因,而Google Attribution基于历史数据建模转化。
对于开发人员来说,同时实施多种归因方法很重要:SKAdNetwork作为主要方法,通过广告网络进行服务器归因,以及带有转化建模的自有分析工具。方法的组合可以恢复IDFA时代高达70–80%的归因准确性。建议在beta测试阶段测试不同的方法组合,以便为特定应用和目标受众选择最佳方案。
常见问题解答
IDFA—是iPhone或iPad设备的唯一代码,广告网络用于展示个性化广告和衡量活动有效性。自iOS 14.5起,应用程序必须通过App Tracking Transparency系统对话框请求权限才能获取IDFA。
IDFV(Identifier for Vendor)—是设备上同一开发者的所有应用程序唯一的标识符。与IDFA不同,IDFV不需要ATT同意,始终可用。IDFA对所有应用程序是统一的,而IDFV仅适用于一个供应商的应用程序(基于bundle ID)。
未经用户同意获取IDFA是不可能的。从iOS 14.5开始,如果用户未通过ATT给予同意,ASIdentifierManager.advertisingIdentifier返回零标识符(00000000-0000-0000-0000-000000000000)。唯一合法的方法是调用ATTrackingManager.requestTrackingAuthorization并获取authorized状态。
NSUserTrackingUsageDescription—是应用程序Info.plist中的一个键,包含在系统ATT对话框中显示的文本。文本应向用户解释为什么应用程序需要跟踪。例如:“您的IDFA用于展示个性化广告和衡量活动有效性”。
不,IDFA是Apple生态系统的专有标识符。在Android上使用GAID(Google Advertising ID)或AAID(Android Advertising ID)。两者功能相似,但受不同规则约束—在Android上,用户可以重置标识符或在Google设置中关闭广告个性化。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。