【问题标题】:iOS 14 get user consent with Facebook SDKiOS 14 通过 Facebook SDK 获得用户同意
【发布时间】:2021-02-23 17:50:49
【问题描述】:

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

Facebook 指南提供了此代码 sn-p 在获得requestTrackingAuthorization() 的同意时使用:

FBAdSettings.setAdvertiserTrackingEnabled(true)

问题是 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
        }
    }
}

我在这里错过了什么?

【问题讨论】:

  • 您可能需要导入另一个 Facebook 包。也许FBAudienceNetwork
  • 你有没有想过这个问题?我正在尝试做同样的事情,遇到同样的问题

标签: ios swift facebook ios14


【解决方案1】:

文档至少具有误导性。你必须导入FBSDKCoreKit.FBSDKSettings,sn-p 是Settings.setAdvertiserTrackingEnabled(true)。如您所见,它不是FBAdSettings,而只是Settings

【讨论】:

  • 我遇到了和 OP 一样的问题,这对我来说似乎不起作用。在设置模块中也找不到该功能。我找到的最接近的是Settings.isAdvertiserIDCollectionEnabled
  • 对我来说,这个解决方案似乎有效,我会在进一步的“现场”测试后将其标记为正确)我在请求函数中使用了import FBSDKCoreKitFBSDKCoreKit.Settings.setAdvertiserTrackingEnabled(true)
  • 我在Settings 上没有setAdvertiserTrackingEnabled 功能,但我可以使用:Settings.isAdvertiserIDCollectionEnabled = true
  • 运行的是旧版本的 Facebook SDK - 更新后也可以使用“setAdvertiserTrackingEnabled”。
  • 请注意,您需要pod FBSDKCoreKit - not pod FBSDKCoreKit/Swift!后者将拉入不存在此 setAdvertiserTrackingEnabled 属性的 SDK 的旧版本 6.5.2
【解决方案2】:

FBAdSettings 位于 FBAudienceNetwork SDK 中,与 Facebook SDK 不同。因此,您需要安装 FBAudienceNetwork SDK(https://developers.facebook.com/docs/audience-network/guides/adding-sdk/ios) 并改为导入 FBAdSettings。

【讨论】:

    【解决方案3】:

    我发现你甚至不需要 Settings.setAdvertiserTrackingEnabled(true) 方法如果你只想记录事件

    因此您可以将其从授权请求中删除,实际上该请求足以激活事件日志记录。

    您可以通过使用Facebook's Event Manager 来测试您记录的事件来验证它。

    【讨论】:

      【解决方案4】:

      您必须导入 FBAudienceNetwork 库

      在 Objective-C 中

      #include <FBAudienceNetwork/FBAdSettings.h>
      

      在斯威夫特中

      import FBAudienceNetwork
      

      【讨论】:

        【解决方案5】:

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

        然后做:

         import FBAudienceNetwork
        

        它会起作用的。

        【讨论】:

          【解决方案6】:

          你需要Facebook audienceNetwork library.

          Facebook 在更新其开发文档方面做得非常糟糕。

          【讨论】:

            【解决方案7】:

            我使用 Objective C 的解决方案:

            在 Podfile 中(位于 ios/ 下)

            target 'my_app' do:
                 pod 'FBAudienceNetwork'
                 pod 'FBSDKCoreKit'
               ... other code ...
            

            在 AppDelegate.m 中:

            #import <FBSDKCoreKit/FBSDKCoreKit.h>
            #include <FBAudienceNetwork/FBAdSettings.h>
            
            
            - (BOOL)application:(UIApplication *)application
                didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
            {
                   [FBAdSettings setAdvertiserTrackingEnabled:YES];
            ... other code ...
            }
            

            在您的 pods 目录所在的位置运行 rm -rf Pods。 运行pod install

            最终安装这些版本以防万一:

            • FBSDKCoreKit (12.2.1)
            • FBAudienceNetwork (6.9.0)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-05-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-11-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多