using System; using System.Collections.Generic; using AdjustSdk; using Newtonsoft.Json; using WZ; using Random = UnityEngine.Random; public class AdjustTrackEvent : D_MonoSingleton { private Dictionary 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>(remoteConfigString); eventTokenMap ??= new Dictionary(); foreach (var keyValuePair in deserializeObject) { eventTokenMap[keyValuePair.Key.ToLower()] = keyValuePair.Value; } } catch (Exception e) { LoggerUtils.Error("event_adjust_set 转化失败"); } } /// /// adjust事件上报 /// /// public void TrackEvent(string trackEvent) { AdjustEvent adjustEvent = new AdjustEvent(trackEvent); Adjust.TrackEvent(adjustEvent); } /// /// 会将eventName 转化成 token 进行上报 /// /// /// public void TrackEventName(string eventName, Dictionary 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); } /// /// 广告收益上报 /// /// 单次展示收益 /// 广告平台名称 /// 广告位ID /// 广告源ID 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); } /// /// 收益分离 /// /// 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(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; } }