I'm not new to iOS development but this is my first time dealing with Facebook SDK. I've been following the FB guide to set up event in my app (installed SDK Swift package, added FBSDKCoreKit methods to AppDelegate), up until the very last instruction on getting user consent with iOS 14.
The Facebook guide provides this code snippet to use when getting consent with requestTrackingAuthorization()
:
FBAdSettings.setAdvertiserTrackingEnabled(true)
Problem is the FBAdSettings
class doesn't seem to be valid in my code (Xcode complains it cannot be found in scope), although I did import FBSDKCoreKit
and there's no other FB modules to import.
Here is my code in full:
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
}
}
}
What am I missing here?
the right solution is to use iOS Audience Network SDK >6.0
and do:
import FBAudienceNetwork
it will work.
The documentation is at least misleading. You have to import FBSDKCoreKit.FBSDKSettings
and the snippet is Settings.setAdvertiserTrackingEnabled(true)
. As you can see, it is not FBAdSettings
but only Settings
.
I found out that you don't even need the method Settings.setAdvertiserTrackingEnabled(true)
if you just want to log events.
So you can remove it from the authorization request, in fact the request is sufficient to activate event logging.
You can verify it by using Facebook's Event Manager to test your logged events.
You have to import the FBAudienceNetwork library
In Objective-C
#include <FBAudienceNetwork/FBAdSettings.h>
In Swift
import FBAudienceNetwork
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With