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
重现
(短的)
- 通过 SPM 添加 SDK。
- 在生成的可执行文件上运行
otool
并观察
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AdSupport.framework/AdSupport
(长)
- 从一个一页的空应用程序开始,调用它
TestFBSDK
- 添加依赖以
https://github.com/facebook/facebook-ios-sdk.git
使用 Swift 包管理器 - 请勿导入或使用SDK
- 为“任何 iOS 设备”构建应用存档
- 在“管理器”窗口的“档案”窗格中找到新档案。
- 右键单击存档条目并选择
Show in Finder
。 - 右键单击存档文件并选择
Show Package Contents
. - 导航到
Products/Applications/
文件夹。- 它包含
.app
文件。
- 它包含
- 打开终端,键入
cd
应用程序图标并将其拖动到终端窗口。- 你会得到类似的东西
cd /.../Library/Developer/Xcode/.../TestFBSDK.app
- 你会得到类似的东西
- 按 Enter 更改目录
- 运行命令
otool -l TestFBSDK | grep AdSupport -A 3 -B 3
- 运行命令
nm TestFBSDK | grep ASIdentifierManager
也可以看看
十年前有很多关于这个的帖子,但我看不到最新的。