147 lines
4.2 KiB
C#
147 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using AdjustSdk;
|
|
using Newtonsoft.Json;
|
|
using WZ;
|
|
using Random = UnityEngine.Random;
|
|
|
|
public class AdjustTrackEvent : D_MonoSingleton<AdjustTrackEvent>
|
|
{
|
|
private Dictionary<string, string> eventTokenMap;
|
|
|
|
|
|
private string GetEventToken(string eventName)
|
|
{
|
|
if (eventTokenMap == null)
|
|
{
|
|
UpdateEventToken();
|
|
}
|
|
|
|
if (eventTokenMap == null || eventTokenMap.Count == 0)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return eventTokenMap.GetValueOrDefault(eventName.ToLower(), null);
|
|
}
|
|
|
|
public void UpdateEventToken()
|
|
{
|
|
var remoteConfigString = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("event_adjust_set");
|
|
if (string.IsNullOrEmpty(remoteConfigString)) return;
|
|
|
|
try
|
|
{
|
|
var deserializeObject = JsonConvert.DeserializeObject<Dictionary<string, string>>(remoteConfigString);
|
|
|
|
eventTokenMap ??= new Dictionary<string, string>();
|
|
|
|
foreach (var keyValuePair in deserializeObject)
|
|
{
|
|
eventTokenMap[keyValuePair.Key.ToLower()] = keyValuePair.Value;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LoggerUtils.Error("event_adjust_set 转化失败");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// adjust事件上报
|
|
/// </summary>
|
|
/// <param name="trackEvent"></param>
|
|
public void TrackEvent(string trackEvent)
|
|
{
|
|
AdjustEvent adjustEvent = new AdjustEvent(trackEvent);
|
|
Adjust.TrackEvent(adjustEvent);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 会将eventName 转化成 token 进行上报
|
|
/// </summary>
|
|
/// <param name="eventName"></param>
|
|
/// <param name="extraInfo"></param>
|
|
public void TrackEventName(string eventName, Dictionary<string, object> extraInfo)
|
|
{
|
|
var eventToken = GetEventToken(eventName);
|
|
if (string.IsNullOrEmpty(eventToken))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var adjustEvent = new AdjustEvent(eventToken);
|
|
if (extraInfo != null)
|
|
{
|
|
foreach (var keyValuePair in extraInfo)
|
|
{
|
|
adjustEvent.AddPartnerParameter(keyValuePair.Key, keyValuePair.Value.ToString());
|
|
adjustEvent.AddCallbackParameter(keyValuePair.Key, keyValuePair.Value.ToString());
|
|
}
|
|
}
|
|
|
|
Adjust.TrackEvent(adjustEvent);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 广告收益上报
|
|
/// </summary>
|
|
/// <param name="revenue">单次展示收益</param>
|
|
/// <param name="adRevenueNetwork">广告平台名称</param>
|
|
/// <param name="adRevenueUnit">广告位ID</param>
|
|
/// <param name="adRevenuePlacement">广告源ID</param>
|
|
public void TrackAdEvent(double revenue, string adRevenueNetwork, string adRevenueUnit, string adRevenuePlacement)
|
|
{
|
|
string source = GetSource();
|
|
AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue(source);
|
|
adjustAdRevenue.SetRevenue(revenue, "USD");
|
|
adjustAdRevenue.AdRevenueNetwork = adRevenueNetwork;
|
|
adjustAdRevenue.AdRevenueUnit = adRevenueUnit;
|
|
adjustAdRevenue.AdRevenuePlacement = adRevenuePlacement;
|
|
Adjust.TrackAdRevenue(adjustAdRevenue);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 收益分离
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private string GetSource()
|
|
{
|
|
string source = "applovin_max_sdk";
|
|
//获取在线参数
|
|
string json = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("revenue_adj");
|
|
if (string.IsNullOrEmpty(json))
|
|
{
|
|
return source;
|
|
}
|
|
|
|
var revenueAdjs = JsonConvert.DeserializeObject<RevenueData[]>(json);
|
|
if (revenueAdjs == null && revenueAdjs.Length == 0)
|
|
{
|
|
return source;
|
|
}
|
|
|
|
int totalRate = 0;
|
|
//获取全部概率
|
|
foreach (var item in revenueAdjs)
|
|
{
|
|
totalRate += item.rate;
|
|
}
|
|
|
|
//开始随机
|
|
int randomValue = Random.Range(0, totalRate);
|
|
int accumulatedRate = 0;
|
|
|
|
//根据随机值定位
|
|
foreach (var item in revenueAdjs)
|
|
{
|
|
accumulatedRate += item.rate;
|
|
if (randomValue < accumulatedRate)
|
|
{
|
|
return item.name;
|
|
}
|
|
}
|
|
|
|
return source;
|
|
}
|
|
} |