SDK_UnityMoney/Assets/Script/SDKManager/AdjustManager/AdjustManager.cs

275 lines
8.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using AdjustSdk;
using ThinkingData.Analytics;
using UnityEngine;
using WZ;
public class AdjustManager : D_MonoSingleton<AdjustManager>
{
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<string, object>() { { "adid", id } });
ShuShuEvent.Instance.UserSet(new Dictionary<string, object>() { { "adid", id } });
});
var network = GetAdjustNetwork();
LoggerUtils.Debug("初始化adjust network"+network);
if (!string.IsNullOrEmpty(network))
{
RushSDKManager.Instance.OnUserSourceListener?.Invoke(IsOrganic(network), network);
}
}
/// <summary>
/// 归因信息
/// </summary>
/// <param name="attribution"></param>
private void AttributionChangedDelegate(AdjustAttribution attribution)
{
Debug.Log("Attribution changed network: " + attribution.Network + " campaign: " + attribution.Campaign + " adgroup: " + attribution.Adgroup + " creative: " + attribution.Creative);
SetAttributionData(attribution);
if (m_start) return;
m_start = true;
callbackNetwork = attribution.Network;
if (IsOrganic(attribution.Network) == false)
{
OnReceiveCallback(attribution);
RushSDKManager.Instance.LogEvent("adjust_Get_Promote","network_name",attribution.Network);
return;
}
InvokeRepeating(nameof(CallGetAttributionAsync), 0, 1);
}
private void SetAttributionData(AdjustAttribution att)
{
var network = att.Network;
if(string.IsNullOrEmpty(network)) network = "Organic";
PlayerPrefsUtils.SavePlayerPrefsString(_adjustNetwork, network);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustCampaign, att?.Campaign);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustAdgroup, att?.Adgroup);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustCreative, att?.Creative);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustClickLabel, att?.ClickLabel);
}
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);
RushSDKManager.Instance.LogEvent("adjust_Get_Promote","network_name",attribute.Network);
}
}
if (callGetTimes >= 20)
{
if (attribute != null)
{
OnReceiveCallback(attribute);
}
else
{
OnReceiveCallback(null);
}
}
}
public static Task<AdjustAttribution> GetAttributionAsync()
{
var tcs = new TaskCompletionSource<AdjustAttribution>();
Adjust.GetAttribution(attribution =>
{
try
{
tcs.TrySetResult(attribution);
}
catch (Exception ex)
{
tcs.TrySetException(ex);
}
});
return tcs.Task;
}
private void OnReceiveCallback(AdjustAttribution attribution)
{
CancelInvoke(nameof(CallGetAttributionAsync));
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";
}
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);
network = network.Length > 30 ? network.Substring(0, 30) : network;
campaign = campaign.Length > 30 ? campaign.Substring(0, 30) : campaign;
adgroup = adgroup.Length > 30 ? adgroup.Substring(0, 30) : adgroup;
creative = creative.Length > 30 ? creative.Substring(0, 30) : creative;
RushSDKManager.Instance.SetUserProperties(new Dictionary<string, object>
{
{ "user_network", network ?? "" },
{ "user_campaign", campaign ?? "" },
{ "user_adgroup", adgroup ?? "" },
{ "user_creative", creative ?? "" },
{ "store_channel", "xiaomi" },
});
RushSDKManager.Instance.SetSuperProperties(new Dictionary<string, object>
{
{ "user_network", network ?? "" },
{ "user_campaign", campaign ?? "" },
{ "user_adgroup", adgroup ?? "" },
{ "user_creative", creative ?? "" },
{ "store_channel", "xiaomi" },
});
AdjustNetwork.Instance.LogEventGetSuccess();
RushSDKManager.Instance.LogEvent("adjust_Get_Type_"+network);
}
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);
}
public 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;
}
}