iOS 14 使用 Facebook SDK 获得用户同意
iOS 14 get user consent with Facebook SDK
我对 iOS 开发并不陌生,但这是我第一次使用 Facebook SDK。我一直在按照 FB 指南在我的应用程序中设置事件(安装 SDK Swift 包,将 FBSDKCoreKit 方法添加到 AppDelegate),直到最后一条关于使用 iOS 14 获得用户同意的说明。
Facebook 指南提供了此代码片段,供在获得 requestTrackingAuthorization()
同意时使用:
FBAdSettings.setAdvertiserTrackingEnabled(true)
问题是 FBAdSettings
class 在我的代码中似乎无效(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
}
}
}
我在这里错过了什么?
该文档至少具有误导性。您必须导入 FBSDKCoreKit.FBSDKSettings
并且代码段是 Settings.setAdvertiserTrackingEnabled(true)
。如您所见,它不是 FBAdSettings
而只是 Settings
.
FBAdSettings在FBAudienceNetwork SDK中,与Facebook SDK不同。因此,您需要安装 FBAudienceNetwork SDK(https://developers.facebook.com/docs/audience-network/guides/adding-sdk/ios) 并改为导入 FBAdSettings。
我发现如果您只想记录事件,您甚至不需要方法 Settings.setAdvertiserTrackingEnabled(true)
。
因此您可以将其从授权请求中删除,实际上该请求足以激活事件记录。
您可以使用 Facebook's Event Manager 测试您记录的事件来验证它。
您必须导入 FBAudienceNetwork 库
在Objective-C
#include <FBAudienceNetwork/FBAdSettings.h>
在Swift
import FBAudienceNetwork
正确的解决方案是使用 iOS Audience Network SDK >6.0
并做:
import FBAudienceNetwork
它会起作用。
你需要 Facebook audienceNetwork library.
Facebook 在更新其开发文档方面做得非常糟糕。
我的解决方案使用 Objective C:
在 Podfile 中(位于 ios/ 下)
target 'my_app' do:
pod 'FBAudienceNetwork'
pod 'FBSDKCoreKit'
... other code ...
在AppDelegate.m中:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#include <FBAudienceNetwork/FBAdSettings.h>
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[FBAdSettings setAdvertiserTrackingEnabled:YES];
... other code ...
}
运行 rm -rf Pods
您的 pods 目录所在的位置。
运行pod install
最终安装了这些版本以防万一:
- FBSDKCoreKit (12.2.1)
- FBAudienceNetwork (6.9.0)
一个小技巧
如果您有一个名为 "Settings" 的函数,它会在 "Settings" 函数内部的方法中调用“setAdvertiserTrackingEnabled”你为另一份工作写信并给出错误。
您可以更改“设置”功能名称或使用"FBSDKCoreKit.Settings"。这样你就可以调用“setAdvertiserTrackingEnabled”。
我对 iOS 开发并不陌生,但这是我第一次使用 Facebook SDK。我一直在按照 FB 指南在我的应用程序中设置事件(安装 SDK Swift 包,将 FBSDKCoreKit 方法添加到 AppDelegate),直到最后一条关于使用 iOS 14 获得用户同意的说明。
Facebook 指南提供了此代码片段,供在获得 requestTrackingAuthorization()
同意时使用:
FBAdSettings.setAdvertiserTrackingEnabled(true)
问题是 FBAdSettings
class 在我的代码中似乎无效(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
}
}
}
我在这里错过了什么?
该文档至少具有误导性。您必须导入 FBSDKCoreKit.FBSDKSettings
并且代码段是 Settings.setAdvertiserTrackingEnabled(true)
。如您所见,它不是 FBAdSettings
而只是 Settings
.
FBAdSettings在FBAudienceNetwork SDK中,与Facebook SDK不同。因此,您需要安装 FBAudienceNetwork SDK(https://developers.facebook.com/docs/audience-network/guides/adding-sdk/ios) 并改为导入 FBAdSettings。
我发现如果您只想记录事件,您甚至不需要方法 Settings.setAdvertiserTrackingEnabled(true)
。
因此您可以将其从授权请求中删除,实际上该请求足以激活事件记录。
您可以使用 Facebook's Event Manager 测试您记录的事件来验证它。
您必须导入 FBAudienceNetwork 库
在Objective-C
#include <FBAudienceNetwork/FBAdSettings.h>
在Swift
import FBAudienceNetwork
正确的解决方案是使用 iOS Audience Network SDK >6.0
并做:
import FBAudienceNetwork
它会起作用。
你需要 Facebook audienceNetwork library.
Facebook 在更新其开发文档方面做得非常糟糕。
我的解决方案使用 Objective C:
在 Podfile 中(位于 ios/ 下)
target 'my_app' do:
pod 'FBAudienceNetwork'
pod 'FBSDKCoreKit'
... other code ...
在AppDelegate.m中:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#include <FBAudienceNetwork/FBAdSettings.h>
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[FBAdSettings setAdvertiserTrackingEnabled:YES];
... other code ...
}
运行 rm -rf Pods
您的 pods 目录所在的位置。
运行pod install
最终安装了这些版本以防万一:
- FBSDKCoreKit (12.2.1)
- FBAudienceNetwork (6.9.0)
一个小技巧
如果您有一个名为 "Settings" 的函数,它会在 "Settings" 函数内部的方法中调用“setAdvertiserTrackingEnabled”你为另一份工作写信并给出错误。
您可以更改“设置”功能名称或使用"FBSDKCoreKit.Settings"。这样你就可以调用“setAdvertiserTrackingEnabled”。