iOS应用中已废弃的ADClient.requestAttributionDetails替代方案
替代方案说明
ADClient相关API已被苹果废弃,现在需要使用AdServices框架结合**AppTrackingTransparency(ATT)**框架来获取广告归因信息,具体步骤如下:
1. 准备工作
- 项目中导入两个框架:
import AdServices import AppTrackingTransparency - 在
Info.plist中添加NSUserTrackingUsageDescription键,填写向用户说明追踪用途的文案(比如"需要追踪您的应用使用情况以提供个性化广告"),否则无法请求ATT权限。
2. 请求用户追踪授权
只有获得用户授权后,才能获取完整的归因数据,代码示例:
func requestTrackingAuthorization() { if #available(iOS 14, *) { ATTrackingManager.requestTrackingAuthorization { status in // 授权状态回调,此处可调用归因API self.fetchAttributionDetails() } } else { // iOS14以下版本可直接调用归因API(无需授权) fetchAttributionDetails() } }
3. 获取广告归因数据
使用AAAttribution的API替代旧的ADClient方法,代码示例:
func fetchAttributionDetails() { if #available(iOS 14.3, *) { AAAttribution.requestAttributionDetails { details, error in if let error = error { print("获取归因数据失败:\(error.localizedDescription)") return } guard let attributionDetails = details else { print("未获取到归因数据") return } // 处理归因字典,比如发送到服务器 print("归因数据:\(attributionDetails)") } } else { // iOS14.3以下版本可继续使用旧的ADClient(但苹果已废弃,建议升级适配) let client = ADClient.shared() client.requestAttributionDetails { dict, err in if let dict = dict { print("旧API获取的归因数据:\(dict)") } } } }
注意事项
- 适配版本:
AAAttribution要求iOS 14.3及以上,ATTrackingManager要求iOS 14及以上。 - 若用户拒绝授权,
attributionDetails会返回部分受限数据,无法获取完整的广告归因信息。
内容的提问来源于stack exchange,提问作者Rob N
相关产品推荐
相关产品推荐

