由于IOS15.0以上的改版,IDFA不能直接获取,而是需要先从玩家那里获取权限,
获取ATT隐私跟踪弹窗权限的方式有很多,可以自己调用xcode脚本,也可以使用github工程。最后在info.list中添加相关弹窗提示即可,到这一步基本没什么问题。
但是导入Appsflyer时候,不能用默认的全部导入方式,这样生成的是Strict mode,打印日志的att_status是-999。具体导入方式参见md文件。
测试代码:
public string devKey = "dsadasdsadsa";
public string appID = "3123213";
public string UWPAppID;
public bool isDebug = true;
public bool getConversionData = true;
public void Awake_AppsFlyer()
{
Debug.LogError("ATT初始化" + devKey + " " + isDebug + " " + getConversionData);
// These fields are set from the editor so do not modify!
//******************************//
AppsFlyer.setIsDebug(isDebug);
//AppsFlyer.getConversionData(true);
Debug.Log("ATT wait" + Time.realtimeSinceStartup);
AppsFlyeriOS.waitForATTUserAuthorizationWithTimeoutInterval(60);
#if UNITY_WSA_10_0 && !UNITY_EDITOR
AppsFlyer.initSDK(devKey, UWPAppID, getConversionData ? this : null);
#else
AppsFlyer.initSDK(devKey, appID, getConversionData ? this : null);
#endif
//******************************/
Debug.Log("ATT " + ATTrackingStatusBinding.GetAuthorizationTrackingStatus());
if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
{
ATTrackingStatusBinding.RequestAuthorizationTracking();
}
AppsFlyer.startSDK();
Debug.LogError("AF启动");
}
最后需要注意的是,如果按照文中所提示的方式,是直接导入库的;也就是说不需要额外pod导入库文件。