我最近从 Xcode 15.1 升级到 Xcode 16,现在在构建过程中遇到以下错误:

此错误似乎与 ADClient 类有关,它是我用来请求归因详细信息的 iAd 框架的一部分。升级之前,代码运行正常,它涉及在 ADClient 上调用 requestAttributionDetails 方法

2

  • 你找到解决方案了吗?


    – 

  • @MuhammadAakif 您能否检查一下答案,如果发现任何错误请告诉我。


    – 


最佳答案
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 来处理归因任务。您可以在下图中看到此更改的突出显示。