using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using AdjustSdk; using ThinkingData.Analytics; using Unity.VisualScripting; using Unity.VisualScripting.Antlr3.Runtime.Tree; using UnityEngine; using WZ; public class AdjustManager : D_MonoSingleton { private AdjustEnvironment environment = AdjustEnvironment.Production; private long startTime = 0; private string Adid; private string Gdid; private string callbackNetwork = ""; bool m_start = false; private int callGetTimes = 0; private string _adjustNetwork = "_adjustNetwork"; private string _adjustCampaign = "_adjustCampaign"; private string _adjustAdgroup = "_adjustAdgroup"; private string _adjustCreative = "_adjustCreative"; private string _adjustClickLabel = "_adjustClickLabel"; public void Init() { //开始计时 startTime = TimeUtils.GetLocalTimestamp(); Adjust.AddGlobalCallbackParameter("ta_distinct_id", TDAnalytics.GetDistinctId()); Adjust.AddGlobalCallbackParameter("rush_version", RushSDKManager.GetSDKVersion()); Adjust.AddGlobalPartnerParameter("rush_version", RushSDKManager.GetSDKVersion()); AdjustConfig config = new AdjustConfig(StaticValue.AdjustToken, environment); // 设置归因变更回调函数 config.AttributionChangedDelegate = AttributionChangedDelegate; // (可选)设置其他配置,如日志级别 config.LogLevel = AdjustLogLevel.Verbose; // 初始化Adjust SDK Adjust.InitSdk(config); //id LoadAdid(); LoadGaid(); ShuShuEvent.Instance.Track("adjust_init"); FireBaseAnalyticsManager.Instance.LogEvent("adjust_init"); Adjust.GetAdid((id) => { ShuShuEvent.Instance.SetSuperProperties(new Dictionary() { { "adid", id } }); ShuShuEvent.Instance.UserSet(new Dictionary() { { "adid", id } }); }); var network = AdjustNetwork.GetNetwork(); if (!string.IsNullOrEmpty(network)) { RushSDKManager.Instance.OnUserSourceListener?.Invoke(IsOrganic(network), network); } } /// /// 归因信息 /// /// private void AttributionChangedDelegate(AdjustAttribution attribution) { Debug.Log("Attribution changed network: " + attribution.Network + " campaign: " + attribution.Campaign + " adgroup: " + attribution.Adgroup + " creative: " + attribution.Creative); if (m_start) return; m_start = true; callbackNetwork = attribution.Network; if (IsOrganic(attribution.Network) == false) { OnReceiveCallback(attribution); return; } InvokeRepeating(nameof(CallGetAttributionAsync), 0, 1); } private async Task CallGetAttributionAsync() { callGetTimes++; AdjustAttribution attribute = await GetAttributionAsync(); LoggerUtils.Debug("[adjust] adjust CallGetAttribution callGetTimes : " + callGetTimes + " attinfo:" + attribute.Network + " clicklabel:" + attribute.ClickLabel); if (attribute != null) { LoggerUtils.Debug("[adjust] adjust 重试次数 : " + callGetTimes + ", attribute : " + attribute.Network + ", callbackNetwork : " + callbackNetwork); if (attribute.Network.Equals(callbackNetwork) == false) { CancelInvoke(nameof(CallGetAttributionAsync)); OnReceiveCallback(attribute); } } if (callGetTimes >= 3*60) { if (attribute != null) { OnReceiveCallback(attribute); } else { OnReceiveCallback(null); } CancelInvoke(nameof(CallGetAttributionAsync)); } } public static Task GetAttributionAsync() { var tcs = new TaskCompletionSource(); Adjust.GetAttribution(attribution => { try { tcs.TrySetResult(attribution); } catch (Exception ex) { tcs.TrySetException(ex); } }); return tcs.Task; } private void OnReceiveCallback(AdjustAttribution attribution) { string campaign = ""; string adgroup = ""; string creative = ""; string network = ""; if (attribution != null) { campaign = attribution.Campaign; adgroup = attribution.Adgroup; creative = attribution.Creative; if (!string.IsNullOrEmpty(attribution.Network)) { network = attribution.Network; } else { network = "Organic"; } } else { network = "Organic"; } AdjustNetwork.Instance.SetNetwork(attribution.Network); AdjustNetwork.Instance.LogEventGetSuccess(); ShuShuEvent.Instance.UserSet(new Dictionary { { "user_ad_network", network ?? "" }, { "user_campaign", campaign ?? "" }, { "user_adgroup", adgroup ?? "" }, { "user_creative", creative ?? "" }, }); RushSDKManager.Instance.SetSuperProperties(new Dictionary { { "ad_network", network ?? "" }, { "campaign", campaign ?? "" }, { "adgroup", adgroup ?? "" }, { "creative", creative ?? "" }, }); RushSDKManager.Instance.OnUserSourceListener?.Invoke(IsOrganic(network), network); PlayerPrefsUtils.SavePlayerPrefsString(_adjustNetwork, network); PlayerPrefsUtils.SavePlayerPrefsString(_adjustCampaign, campaign); PlayerPrefsUtils.SavePlayerPrefsString(_adjustAdgroup, adgroup); PlayerPrefsUtils.SavePlayerPrefsString(_adjustCreative, creative); PlayerPrefsUtils.SavePlayerPrefsString(_adjustClickLabel, attribution?.ClickLabel); } public string GetAdjustNetwork() { return PlayerPrefsUtils.GetPlayerPrefsString(_adjustNetwork); } public string GetAdjustCampaign() { return PlayerPrefsUtils.GetPlayerPrefsString(_adjustCampaign); } public string GetAdjustAdgroup() { return PlayerPrefsUtils.GetPlayerPrefsString(_adjustAdgroup); } public string GetAdjustCreative() { return PlayerPrefsUtils.GetPlayerPrefsString(_adjustCreative); } public string GetAdjustClickLabel() { return PlayerPrefsUtils.GetPlayerPrefsString(_adjustClickLabel); } private bool IsOrganic(string _network) { if (string.IsNullOrEmpty(_network) || _network.Equals("Organic") || _network.Equals("Untrusted Devices")) { return true; } return false; } public long GetStartTime() { return startTime; } private void LoadGaid() { Adjust.GetGoogleAdId(googleAdId => { Gdid = googleAdId; }); } public string GetGdid() { return Gdid; } private void LoadAdid() { Adjust.GetAdid(adid => { Adid = adid; }); } public string GetAdid() { return Adid; } }