我最近从 Xcode 15.1 升级到 Xcode 16,现在在构建过程中遇到以下错误:
此错误似乎与 ADClient 类有关,它是我用来请求归因详细信息的 iAd 框架的一部分。升级之前,代码运行正常,它涉及在 ADClient 上调用 requestAttributionDetails 方法
2
最佳答案
1
但是,iAd 在 iOS 14 及更高版本中已被弃用。Apple 强烈建议使用AdServices框架进行归因,尤其是针对较新 iOS 版本的应用。
从您的项目中删除 iAd 框架
如果您以前添加过 iAd 但不再需要它(或正在迁移到 AdServices),请务必:
- 从带有库的链接二进制文件中删除 iAd.framework。
- 删除代码库中的所有导入 iAd 语句。
- 删除所有与 iAd 相关的代码
切换到 AdServices 框架
导入 AdServices 框架:
import AdServices
将与 iAd 相关的代码替换为 AdServices 等效的代码:
if #available(iOS 14.3, *) {
do {
let attributionToken = try AAAttribution.attributionToken()
// Handle the attribution token (e.g., send it to your backend)
completion(["AttributionToken": attributionToken], nil)
} catch {
// Handle the error
completion(nil, error as NSError)
}
} else {
// Handle unsupported iOS versions
completion(nil, nil)
}
在 Xcode 16 中,当跳转到 ADClient 的定义时,它被明确标记为已过时且不再允许。建议的替代方案是使用 AdServices 的 AAAttribution 来处理归因任务。您可以在下图中看到此更改的突出显示。
|
–
–
|