我最近从 Xcode 15.1 升级到 Xcode 16,现在在构建过程中遇到以下错误:
此错误似乎与 ADClient 类有关,该类是我用来请求归因详细信息的 iAd 框架的一部分。代码在升级之前运行良好,其中涉及调用 ADClient 上的 requestAttributionDetails 方法
但是,iAd 在 iOS 14 及更高版本中已弃用。 Apple 强烈建议使用 AdServices 框架进行归因,尤其是针对较新 iOS 版本的应用程序。
从您的项目中删除 iAd 框架
如果您过去添加过 iAd 并且不再需要它(或正在迁移到 AdServices),请务必:
切换到 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 来处理归因任务。您可以在下图中突出显示此更改。