首页 > 解决方案 > Facebook iOS SDK 链接不需要的 AdSupport 库

问题描述

TL;DR : 将最新的 Facebook iOS SDK 添加到一个新的空项目中,并放入AdSupport链接表中。AdSupport提供ASIdentifierManager,它提供了 IDFA。对于儿童应用程序,这意味着自动拒绝。我的问题是:是否有可能停止跟踪的这种传递使用?

细节

人们可以找到很多“[T]he Facebook SDK 不需要包含 AdSupport.framework”这句话的副本。但是他们没有说明如何阻止编译器将其添加到链接表中。看起来 Facebook 正试图强迫我们进行追踪,无论我们是否愿意。“”的出现次数ASIdentifierManager越来越多:

- SDK 7: 13 appearances
- SDK 9: 30
- SDK 11: 66

重现

(短的)

  1. 通过 SPM 添加 SDK。
  2. 在生成的可执行文件上运行otool并观察
    Load command 18
             cmd LC_LOAD_DYLIB
         cmdsize 88
            name /System/Library/Frameworks/AdSupport.framework/AdSupport

(长)

  1. 从一个一页的空应用程序开始,调用它TestFBSDK
  2. 添加依赖以https://github.com/facebook/facebook-ios-sdk.git使用 Swift 包管理器
  3. 请勿导入或使用SDK
  4. 为“任何 iOS 设备”构建应用存档
  5. 在“管理器”窗口的“档案”窗格中找到新档案。
  6. 右键单击存档条目并选择Show in Finder
  7. 右键单击存档文件并选择Show Package Contents.
  8. 导航到Products/Applications/文件夹。
    • 它包含.app文件。
  9. 打开终端,键入cd 应用程序图标并将其拖动到终端窗口。
    • 你会得到类似的东西 cd /.../Library/Developer/Xcode/.../TestFBSDK.app
  10. 按 Enter 更改目录
  11. 运行命令
    • otool -l TestFBSDK | grep AdSupport -A 3 -B 3
  12. 运行命令
    • nm TestFBSDK | grep ASIdentifierManager

也可以看看

十年前有很多关于这个的帖子,但我看不到最新的。

标签: linkerfacebook-ios-sdkappstore-approvalidfa

解决方案


在此期间,有些人尝试评论或 ifdef 删除 Facebook SDK 的部分内容。问题是在多大程度上追求编辑的传递闭包。

这是对我有用的一组最小差异的链接。也就是说,可执行文件没有AdSupportASIdentifierManager引用。

https://github.com/snorrsi/facebook-ios-sdk/commit/9d69d9ab0e510359311085def696c750c345037a


推荐阅读