我对iOS开发并不陌生,但这是我第一次使用Facebook SDK。我一直按照FB指南在我的应用中设置事件(安装SDK Swift包,在AppDelegate中添加FBSDKCoreKit方法),直到最后一次使用iOS 14获得用户同意的说明。
Facebook指南提供了以下代码片段,用于获取requestTrackingAuthorization()
的同意:
FBAdSettings.setAdvertiserTrackingEnabled(true)
问题是FBAdSettings
类在我的代码中似乎无效(Xcode抱怨在作用域中找不到它),尽管我导入了import FBSDKCoreKit
,但没有其他FB模块要导入。
下面是我的完整代码:
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
}
}
}
我错过了什么?
9条答案
按热度按时间aamkag611#
文档至少是误导性的。你必须导入
FBSDKCoreKit.FBSDKSettings
,代码片段是Settings.setAdvertiserTrackingEnabled(true)
。正如你所看到的,它不是FBAdSettings
,而只是Settings
。qltillow2#
正确解决方案是使用iOS受众网络SDK〉6.0
并做到:
它会起作用。
8hhllhi23#
您必须导入FBAudienceNetwork库
在Objective-C中
在斯威夫特
nhaq1z214#
我发现,如果只想记录事件**,甚至不需要
Settings.setAdvertiserTrackingEnabled(true)
**方法。因此您可以将其从授权请求中删除,实际上该请求足以激活事件日志记录。
您可以通过使用Facebook's Event Manager测试记录的事件来验证它。
xurqigkl5#
FBAdSettings位于FBAudienceNetwork SDK中,与Facebook SDK不同,因此您需要安装FBAudienceNetwork SDK(https://developers.facebook.com/docs/audience-network/guides/adding-sdk/ios)并导入FBAdSettings。
nwwlzxa76#
你需要Facebook的观众网络库。
Facebook在更新开发文档方面做得相当糟糕。
q3qa4bjr7#
我使用目标C的解决方案:
在Podfile中(位于ios/下)
在AppDelegate.m中:
在pod目录所在的位置运行
rm -rf Pods
。最后安装了这些版本,以防万一:
lf3rwulv8#
一个小提示
如果您有一个名为**“Settings”的函数,它将调用您为其他作业编写的“Settings”函数内的方法中的“setAdvertiserTrackingEnabled”,并给出错误。
您可以更改“设置”函数名或使用“FBSDKCoreKit.设置”**。这样您就可以调用“setAdvertiserTrackingEnabled”。
2hh7jdfx9#
要手动更改跟踪,从版本13.0.0及更高版本开始,您需要在以前使用
Settings
的地方使用Settings.shared
。变更日志:
已删除不推荐使用的设置. setAdvertiserTrackingEnabled(_:)(请改用设置. shared. isAdvertiserTrackingEnabled属性设置值")
如果您使用的是13.0.0及更高版本,请使用
代替
请注意,在iOS 14.5之后,您需要首先向用户请求权限,示例如下: