Facebook iOS SDK 链接不需要的 AdSupport 库
Facebook iOS SDK links unwanted AdSupport library
TL;DR:将最新的 Facebook iOS SDK 添加到一个新的空项目中,将 AdSupport
放入 link table。 AdSupport
提供了ASIdentifierManager
,它提供了IDFA。对于儿童应用程序,这意味着自动拒绝。我的问题是:是否可以停止跟踪的这种传递性使用?
详情
可以找到 lots of copies 的句子“[T]he Facebook SDK does not require AdSupport.framework to be included.”。但是他们没有说明如何阻止 编译器将它添加到link table。看起来 Facebook 正试图强迫我们进行跟踪,无论我们是否愿意。 “ASIdentifierManager
”的出现次数正在增长:
- SDK 7: 13 appearances
- SDK 9: 30
- SDK 11: 66
重现
(短)
- 通过 SPM 添加 SDK。
- 运行
otool
在生成的 executable 上观察
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AdSupport.framework/AdSupport
(长)
- 从一页空白应用开始,将其命名为
TestFBSDK
- 使用 Swift 包管理器
添加对 https://github.com/facebook/facebook-ios-sdk.git
的依赖
- 不要导入或使用 SDK
- 为“任何 iOS 设备”构建应用存档
- 在管理器的存档窗格中找到新存档 window。
- 右键单击存档条目并选择
Show in Finder
。
- 右键单击存档文件并选择
Show Package Contents
。
- 导航到
Products/Applications/
文件夹。
- 它包含
.app
文件。
- 打开终端,输入
cd
并将应用程序图标拖到终端 window。
- 你会得到类似
cd /.../Library/Developer/Xcode/.../TestFBSDK.app
- 按 Enter 键更改目录
- 运行命令
otool -l TestFBSDK | grep AdSupport -A 3 -B 3
- 运行命令
nm TestFBSDK | grep ASIdentifierManager
另请参阅
十年前有很多关于此的帖子,但我看不到最新的帖子。
- Need to remove identifier
- App rejected
- Another app rejected
在此期间,一些人已经尝试对 Facebook SDK 的部分内容进行评论或 ifdef-ing。问题是在多大程度上追求你的编辑的传递关闭。
这是一个 link 对我有用的最小差异集。也就是说,可执行文件没有 AdSupport
或 ASIdentifierManager
引用。
https://github.com/snorrsi/facebook-ios-sdk/commit/9d69d9ab0e510359311085def696c750c345037a
TL;DR:将最新的 Facebook iOS SDK 添加到一个新的空项目中,将 AdSupport
放入 link table。 AdSupport
提供了ASIdentifierManager
,它提供了IDFA。对于儿童应用程序,这意味着自动拒绝。我的问题是:是否可以停止跟踪的这种传递性使用?
详情
可以找到 lots of copies 的句子“[T]he Facebook SDK does not require AdSupport.framework to be included.”。但是他们没有说明如何阻止 编译器将它添加到link table。看起来 Facebook 正试图强迫我们进行跟踪,无论我们是否愿意。 “ASIdentifierManager
”的出现次数正在增长:
- SDK 7: 13 appearances
- SDK 9: 30
- SDK 11: 66
重现
(短)
- 通过 SPM 添加 SDK。
- 运行
otool
在生成的 executable 上观察
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AdSupport.framework/AdSupport
(长)
- 从一页空白应用开始,将其命名为
TestFBSDK
- 使用 Swift 包管理器 添加对
- 不要导入或使用 SDK
- 为“任何 iOS 设备”构建应用存档
- 在管理器的存档窗格中找到新存档 window。
- 右键单击存档条目并选择
Show in Finder
。 - 右键单击存档文件并选择
Show Package Contents
。 - 导航到
Products/Applications/
文件夹。- 它包含
.app
文件。
- 它包含
- 打开终端,输入
cd
并将应用程序图标拖到终端 window。- 你会得到类似
cd /.../Library/Developer/Xcode/.../TestFBSDK.app
- 你会得到类似
- 按 Enter 键更改目录
- 运行命令
otool -l TestFBSDK | grep AdSupport -A 3 -B 3
- 运行命令
nm TestFBSDK | grep ASIdentifierManager
https://github.com/facebook/facebook-ios-sdk.git
的依赖
另请参阅
十年前有很多关于此的帖子,但我看不到最新的帖子。
- Need to remove identifier
- App rejected
- Another app rejected
在此期间,一些人已经尝试对 Facebook SDK 的部分内容进行评论或 ifdef-ing。问题是在多大程度上追求你的编辑的传递关闭。
这是一个 link 对我有用的最小差异集。也就是说,可执行文件没有 AdSupport
或 ASIdentifierManager
引用。
https://github.com/snorrsi/facebook-ios-sdk/commit/9d69d9ab0e510359311085def696c750c345037a