App Tracking Transparency
IDFA(广告标识符)
在 iOS 14.5 之前,广告主可以使用 IDFA(广告标识符)来测量广告效果并进行定向广告。但是 在 iOS 14.5+ 及以上版本引入 ATT(应用追踪透明度)并加强隐私保护后,只有在用户同意的情况下才能获取 IDFA(广告标识符)值.
使用 ATT(App Tracking Transparency)
在 iOS 14.5+ 及以上版本中,若要请求对 IDFA 等标识符的访问与使用权限 请使用 ATT(App Tracking Transparency)同意弹窗才可以。若要通过编码手动获取 IDFA(广告标识符)访问权限,请按照以下五个步骤进行。
获取 IDFA(广告标识符)访问权限的方法可通过本页面所述的五个步骤来 1) 手动获取的方法与在无代码操作的情况下 2) 使用 AdMob UMP(User Messaging Platform)获取 IDFA 访问权限的方法(推荐方式)两种方式。
若要使用 AdMob UMP 的 IDFA 请求消息功能来获取 IDFA 访问权限,请在本文档的 UMP(User Messaging Platform) 部分按照说明进行设置。
如果您在欧洲经济区(European Economic Area)提供 iOS 应用服务,或计划提供服务, 请安装 iOS ADX SDK 版本 2.5.0(或 Unity ADX SDK 版本 2.5.0)及以上,并在本文档的 UMP(User Messaging Platform) 部分按照说明进行设置。
Step 1. 准备 SDK
对于新应用与更新应用,请准备 iOS SDK 版本 2.5.0 及以上,Unity 的情况下请准备 Unity Package 版本 2.5.0 及以上。
Step 2. 配置 SKAdNetwork
无论用户是否同意 ATT,为了衡量苹果官方提供的广告活动的成效, SKAdNetwork 已被引入。要使用 SKAdNetwork,请在 iOS 应用项目中的 Info.plist 文件中添加广告标识符列表信息。.
(示例)
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>example100.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>example200.skadnetwork</string>
</dict>
</array>
Step 3. 添加关于权限使用的说明文案
在 Info.plist 文件中,添加 NSUserTrackingUsageDescription 键以及用于请求用户同意权限使用的提示信息。
如果在 Info.plist 文件中未添加说明文字,将会发生异常退出(Crash),请注意。
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
使用说明消息会显示在 ATT 弹窗中。

Step 4. 权限请求
若要显示权限授权请求,请调用 requestTrackingAuthorizationWithCompletionHandler: 。
启用 AdMob UMP(User Messaging Platform)的 IDFA 消息功能时,即使不进行特殊的编程编码, UMP 内部也会自动执行 ATT 同意弹窗请求功能,因此请忽略本步骤(Step4)及下一步骤(Step5)。.
AdMob UMP(User Messaging Platform)的 IDFA 消息自 iOS ADX SDK V2.5.0、Unity ADX SDK V2.5.0 及以上版本起支持。
若要使用 AdMob UMP 中包含的 GDPR 同意消息与 IDFA 请求消息功能,请参阅本文档的 UMP(User Messaing Platform)。
ATT 需要在应用完全启动并处于 Active 状态时调用,才能正常显示弹窗。
application:didFinishLaunchingWithOptions:中如果调用了 ATT,从 iOS 15 起将不再生效。当用户授予应用跟踪透明度权限后,在完成
callback被调用后,请求广告,以便广告SDK在广告请求中使用IDFA。
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- (void)requestIDFA {
if (@available(iOS 14.5, *)) {
// 通过 ATT 弹窗进行权限请求
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
}import AppTrackingTransparency
func requestIDFA() {
if #available(iOS 14.5, *) {
// 通过 ATT 弹窗进行权限请求
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
})
}
}用于获取 IDFA 的 ATT opt-in(广告跟踪同意弹窗)只能在应用完全运行(Active 状态)时调用。
在 iOS 15 之前,可在应用启动后立即显示 ATT 同意弹窗,但从 iOS 15 起需要在应用完全运行后 (Active 状态)再进行调用。
最后更新于
这有帮助吗?