iOS 14 使用 Facebook SDK 获得用户同意

Den*_*nov 10 facebook ios swift ios14

我对 iOS 开发并不陌生,但这是我第一次处理 Facebook SDK。我一直在遵循 FB 指南在我的应用程序中设置事件(安装了 SDK Swift 包,向 AppDelegate 添加了 FBSDKCoreKit 方法),直到最后一条关于使用 iOS 14 获得用户同意的指令。

Facebook 指南提供了以下代码片段,以便在获得同意时使用requestTrackingAuthorization()

FBAdSettings.setAdvertiserTrackingEnabled(true)
Run Code Online (Sandbox Code Playgroud)

问题是FBAdSettings该类在我的代码中似乎无效(Xcode 抱怨它在范围内找不到),尽管我做到了import FBSDKCoreKit并且没有其他 FB 模块要导入。

这是我的完整代码:

import UIKit
import AppTrackingTransparency
import FBSDKCoreKit

extension ViewController {
    func requestTrackingPermission() {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { (status) in
                switch status {
                    case .authorized:
                        FBAdSettings.setAdvertiserTrackingEnabled(true)  //Cannot find 'FBAdSettings' in scope
                    ...
                }
            }
        } else {
            // Fallback on earlier versions
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

小智 15

该文档至少具有误导性。您必须导入FBSDKCoreKit.FBSDKSettings并且代码段是Settings.setAdvertiserTrackingEnabled(true). 如您所见,它FBAdSettings不仅是Settings

  • 对我来说这个解决方案似乎有效,我将在进一步的“现场”测试后将其标记为正确)我在请求函数中使用了 ```import FBSDKCoreKit``` 和 ```FBSDKCoreKit.Settings.setAdvertiserTrackingEnabled(true)``` 。 (2认同)
  • 我在“Settings”上没有“setAdvertiserTrackingEnabled”函数,但我可以使用:“Settings.isAdvertiserIDCollectionEnabled = true” (2认同)

小智 5

正确的解决方案是使用 iOS Audience Network SDK >6.0

并做:

 import FBAudienceNetwork
Run Code Online (Sandbox Code Playgroud)

它会起作用的。