TL;DR: Adding the latest Facebook iOS SDK to a new, empty project puts AdSupport
in the link table. AdSupport
provides the ASIdentifierManager
, which provides the IDFA. For a kids' app, this means automatic rejection. My question is: is it possible to stop this transitive use of tracking?
Details
One can find lots of copies of the sentence “[T]he Facebook SDK does not require AdSupport.framework to be included.” But they do not say how to stop the compiler from adding it to the link table. It looks like Facebook is trying to force us to track, whether we want to or not. The number of appearances of "ASIdentifierManager
" is growing:
- SDK 7: 13 appearances
- SDK 9: 30
- SDK 11: 66
To Reproduce
(Short)
- Add the SDK via SPM.
- Run
otool
on the resulting executable and observe
Load command 18
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AdSupport.framework/AdSupport
(Long)
- Start with a one-page empty app, call it
TestFBSDK
- Add dependency to
https://github.com/facebook/facebook-ios-sdk.git
using Swift Package Manager - Do not import or use the SDK
- Build an app Archive for "Any iOS Device"
- Find the new archive in the Archives pane of the Organizer window.
- Right-click on the archive entry and choose
Show in Finder
. - Right-click on the archive file and choose
Show Package Contents
. - Navigate to the
Products/Applications/
folder.- It contains the
.app
file.
- It contains the
- Open the Terminal, type
cd
and drag the app icon to the terminal window.- You will get something like
cd /.../Library/Developer/Xcode/.../TestFBSDK.app
- You will get something like
- Hit Enter to change directories
- Run the command
otool -l TestFBSDK | grep AdSupport -A 3 -B 3
- Run the command
nm TestFBSDK | grep ASIdentifierManager
See Also
There are plenty of posts on this from ten years ago but I see nothing current.