问题描述
我正在为 Unity 游戏实施 ironsource Facebook Audience Network 中介。在文档中,它提到在第 9 步中设置 SetAdvertiserTrackingEnabled
。抱歉,如果这听起来很愚蠢,但如果我使用的是 ironsource 中介而不是实际的 Audience Network SDK,我该怎么做?我在这里遗漏了什么吗?
ironsource 集成文档:https://developers.ironsrc.com/ironsource-mobile/unity/facebook-mediation-guide/#step-9
解决方法
最简单的方法是执行以下操作:
-
打开 Assets/IronSource/Plugins/iOS/iOSBridge.m
-
导入 FBAdSettings
#import "iOSBridge.h" #import <FBAudienceNetwork/FBAdSettings.h> #import <UIKit/UIKit.h>
-
在初始化 IronSource 之前调用 setAdvertiserTrackingEnabled
- (instancetype)init { [FBAdSettings setAdvertiserTrackingEnabled:YES]; if(self = [super init]){ [IronSource setRewardedVideoDelegate:self];
我对 Objective-C 不是很熟悉,但我按照 FAN 的建议做了,并添加了一个 C# 脚本
using UnityEngine;
using System.Runtime.InteropServices;
#if UNITY_IOS
namespace AudienceNetwork
{
public static class AdSettings
{
[DllImport("__Internal")]
private static extern void FBAdSettingsBridgeSetAdvertiserTrackingEnabled(bool advertiserTrackingEnabled);
public static void SetAdvertiserTrackingEnabled(bool advertiserTrackingEnabled)
{
FBAdSettingsBridgeSetAdvertiserTrackingEnabled(advertiserTrackingEnabled);
}
}
}
#endif
所以在我可以简单地设置 FAN 标志之后:
AudienceNetwork.AdSettings.SetAdvertiserTrackingEnabled(true);
使用 iOS 支持包,我还做了一个简单的脚本,根据 iOS 首选项中的当前 IDFA/ATT 设置进行设置(用户可以随时更改)。
using Unity.Advertisement.IosSupport;
public void iOS_SetFanFlag()
{
bool setFanFlag;
if ((int)ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == 3)
setFanFlag = true; //If==3,App is AUTHORIZED in settings
else setFanFlag = false; //DENIED,RESTRICTED or NOT DETERMINED (==2,1,0)
AudienceNetwork.AdSettings.SetAdvertiserTrackingEnabled(setFanFlag);
}
案例是 - 这必须在 IronSource 初始化之前设置,我不确定如何检查/测试它是否正常工作。