diff --git a/Runtime/GuruCore/Runtime/Ads/ADService.cs b/Runtime/GuruCore/Runtime/Ads/ADService.cs index 6c24ddc..ed3fa09 100644 --- a/Runtime/GuruCore/Runtime/Ads/ADService.cs +++ b/Runtime/GuruCore/Runtime/Ads/ADService.cs @@ -1,4 +1,5 @@ +using System; using UnityEngine; namespace Guru @@ -115,7 +116,7 @@ namespace Guru private void OnLoadMaxBanner() { - _badsloadStartTime = Time.realtimeSinceStartup; + _badsloadStartTime = DateTime.UtcNow; _chanelMax.LoadBannerAD(); OnBannerStartLoad?.Invoke(_chanelMax.MaxBADSSlotID); } @@ -147,7 +148,7 @@ namespace Guru } private void OnLoadMaxIV() { - _iadsLoadStartTime = Time.realtimeSinceStartup; // 更新计时器 + _iadsLoadStartTime = DateTime.UtcNow; // 更新计时器 _chanelMax.LoadInterstitialAD(); OnInterstitialStartLoad?.Invoke(_chanelMax.MaxIADSSlotID); } @@ -180,7 +181,7 @@ namespace Guru private void OnLoadMaxRV() { - _radsLoadStartTime = Time.realtimeSinceStartup; // 更新计时器 + _radsLoadStartTime = DateTime.UtcNow; // 更新计时器 _chanelMax.LoadRewardAD(); OnRewardedStartLoad?.Invoke(_chanelMax.MaxRADSSlotID); } diff --git a/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs b/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs index 3f6dcdf..b04c14f 100644 --- a/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs +++ b/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs @@ -213,11 +213,24 @@ namespace Guru // #2 tch_001 double revenue = impressionData.value; - CalcTaichi001Value(revenue); - CalcTaichi02Value(revenue); + CalcTch001Value(revenue); + CalcTch02Value(revenue); // #3 adjust_ad_revenue AdjustService.TrackADRevenue(impressionData); + + + var adType = impressionData.ad_format.ToUpper(); + // #4 Paid Event + Debug.Log($"{Tag} --- ReportAdsRevenue :: Send Paid Event: {adType}"); + if (adType.Contains("INTER")) + { + OnInterstitialPaidEvent(impressionData); + } + else if (adType.Contains("REWARD")) + { + OnRewardedAdPaidEvent(impressionData); + } } @@ -238,7 +251,7 @@ namespace Guru else { // 找不到的话会缓存 adInfo, 等待获取 RCid - _impressionCache[adInfo.CreativeIdentifier] = CreateImpressionData(adInfo, "", Analytics.AdMAX); + SetImpressionData(adInfo); } } @@ -281,7 +294,7 @@ namespace Guru /// 计算太极001收益 /// /// - private void CalcTaichi001Value(double revenue) + private void CalcTch001Value(double revenue) { TchAD001RevValue += revenue; double revenueValue = TchAD001RevValue; @@ -298,7 +311,7 @@ namespace Guru /// 计算太极02收益 /// /// - private void CalcTaichi02Value(double revenue) + private void CalcTch02Value(double revenue) { if (!Analytics.EnableTch02Event) return; @@ -320,21 +333,25 @@ namespace Guru private string _backColorStr = "#50A436"; private Color _backColor = new Color(0, 0, 0, 0); private string _badsCategory; - protected float _badsloadStartTime = 0; + protected DateTime _badsloadStartTime; private bool _bannerVisible = false; public bool IsBannerVisible => _bannerVisible; private int _badsloadedNum = 0; private int _badsLoadFailNum = 0; - - - private int GetAdsLoadDuration(ref float startTime) + + /// + /// 获取动作间隔之间的毫秒数 + /// + /// + /// + private int GetActionDuration(DateTime startTime) { - int duration = (int)((Time.realtimeSinceStartup - startTime) * 1000); - startTime = Time.realtimeSinceStartup; - return duration; + var sp = DateTime.UtcNow.Subtract(startTime.ToUniversalTime()).Duration(); + return (int) sp.TotalMilliseconds; } + public virtual void RequestBannerAD() { _backColor = Color.clear; @@ -365,12 +382,12 @@ namespace Guru public void OnLoadBads() { - _badsloadStartTime = Time.realtimeSinceStartup; + _badsloadStartTime = DateTime.UtcNow; } protected virtual void OnBadsLoaded() { - _badsloadStartTime = Time.realtimeSinceStartup; + _badsloadStartTime = DateTime.UtcNow; OnBannerLoaded?.Invoke(); } @@ -446,7 +463,7 @@ namespace Guru _badsLoadFailNum ++; // Analytics.ADBadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _badsloadStartTime), _badsCategory); Analytics.ADBadsFailed(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _badsloadStartTime), category: _badsCategory, + duration: GetActionDuration(_badsloadStartTime), category: _badsCategory, errorCode: (int)errorInfo.Code, waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); } @@ -488,9 +505,12 @@ namespace Guru private string _iadsCategory = "main"; private int _interstitialRetryAttempt; - protected float _iadsLoadStartTime; private Action _interCloseAction; protected bool _isIadsLoading = false; + protected DateTime _iadsLoadStartTime; + private DateTime _iadsDisplayStartTime; + + public bool IsIadsLoading => _isIadsLoading; public virtual void RequestInterstitialAD() @@ -514,7 +534,7 @@ namespace Guru public void OnLoadIads() { - _iadsLoadStartTime = Time.realtimeSinceStartup; + _iadsLoadStartTime = DateTime.UtcNow; } @@ -548,6 +568,7 @@ namespace Guru _interCloseAction = dismissAction; MaxSdk.ShowInterstitial(GetInterstitialID()); + _iadsDisplayStartTime = DateTime.UtcNow; // RequestInterstitialAD(); // 直接加载下一个广告 } @@ -558,7 +579,7 @@ namespace Guru // Reset retry attempt // Analytics.ADIadsLoaded(adUnitId, GetAdsLoadDuration(ref _iadsLoadStartTime), _iadsCategory); Analytics.ADIadsLoaded(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _iadsLoadStartTime), category: _iadsCategory)); + duration: GetActionDuration(_iadsLoadStartTime), category: _iadsCategory)); _interstitialRetryAttempt = 0; Debug.Log( $"[SDK][Ads][Loaded] --- adUnitId:{adUnitId} Revenue:{adInfo.Revenue} Type:{adInfo.AdFormat} CreativeId:{adInfo.CreativeIdentifier}"); @@ -577,8 +598,9 @@ namespace Guru float retryDelay = GetRetryDelaySeconds(_interstitialRetryAttempt); DelayCall(retryDelay, RequestInterstitialAD); // Analytics.ADIadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _iadsLoadStartTime), _iadsCategory); + if(string.IsNullOrEmpty(_iadsCategory)) _iadsCategory = "not_set"; Analytics.ADIadsFailed(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _iadsLoadStartTime), category: _iadsCategory, + duration: GetActionDuration(_iadsLoadStartTime), category: _iadsCategory, errorCode: (int)errorInfo.Code, waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); @@ -593,42 +615,65 @@ namespace Guru $"InterstitialFailedToDisplayEvent AdLoadFailureInfo:{errorInfo.AdLoadFailureInfo}, Message: {errorInfo.Message}"); // Analytics.ADIadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _iadsLoadStartTime), _iadsCategory); Analytics.ADIadsFailed(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _iadsLoadStartTime), category: _iadsCategory, + duration: GetActionDuration(_iadsDisplayStartTime), category: _iadsCategory, errorCode: (int)errorInfo.Code, waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); DelayCall(2.0f, RequestInterstitialAD); } - + + // iads_imp protected virtual void OnInterstitialDisplayEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { // Analytics.ADIadsImp(adUnitId, _iadsCategory); - Analytics.ADIadsImp(AdParams.Build(adUnitId, category: _iadsCategory)); + string reviewCreativeId = GetReviewCreativeId(adInfo.CreativeIdentifier); + Analytics.ADIadsImp(AdParams.Build(adUnitId, adInfo, category: _iadsCategory, reviewCreativeId:reviewCreativeId)); } protected virtual void OnInterstitialClickEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { // Analytics.ADIadsClick(adUnitId, _iadsCategory); - Analytics.ADIadsClick(AdParams.Build(adUnitId, category: _iadsCategory)); + string reviewCreativeId = GetReviewCreativeId(adInfo.CreativeIdentifier); + var impressionData = CreateImpressionData(adInfo, reviewCreativeId); + var data = impressionData.BuildEventData(); + if(string.IsNullOrEmpty(_iadsCategory)) _iadsCategory = "not_set"; + data["item_category"] = _iadsCategory; + data.Remove("ad_format"); + Analytics.ADIadsClick(data); } - + + // Close protected virtual void OnInterstitialDismissedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { // Interstitial ad is hidden. Pre-load the next ad _interCloseAction?.Invoke(); OnInterstitialClosed?.Invoke(); // Analytics.ADIadsClose(adUnitId, _iadsCategory); - Analytics.ADIadsClose(AdParams.Build(adUnitId, category: _iadsCategory)); + Analytics.ADIadsClose(AdParams.Build(adUnitId, + duration:GetActionDuration(_iadsDisplayStartTime), + category: _iadsCategory)); + //延时加载下一个广告 DelayCall(2.0f, RequestInterstitialAD); } + private void OnInterstitialPaidEvent(AdImpressionData impressionData) + { + var data = impressionData.BuildEventData(); + if(string.IsNullOrEmpty(_iadsCategory)) _iadsCategory = "not_set"; + data["item_category"] = _iadsCategory; + data.Remove("ad_format"); + Analytics.ADIadsPaid(data); + } + + #endregion #region Rewarded Ads private string _rewardCategory = "main"; private int _rewardRetryAttempt; - protected float _radsLoadStartTime; + protected DateTime _radsLoadStartTime; + protected DateTime _radsShowStartTime; private Action _rvRewardAction; private Action _rvFailAction; private Action _rvDismissAction; @@ -661,7 +706,7 @@ namespace Guru public void OnLoadRads() { - _radsLoadStartTime = Time.realtimeSinceStartup; + _radsLoadStartTime = DateTime.UtcNow; } @@ -700,6 +745,8 @@ namespace Guru _rvDismissAction = dismissAction; MaxSdk.ShowRewardedAd(GetRewardedID()); + _radsShowStartTime = DateTime.UtcNow; + // RequestRewardedAD(); } @@ -712,7 +759,7 @@ namespace Guru // this.Log("OnRewardedAdLoadedEvent"); // Analytics.ADRadsLoaded(adUnitId, GetAdsLoadDuration(ref _radsLoadStartTime), _rewardCategory); Analytics.ADRadsLoaded(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _radsLoadStartTime), category: _iadsCategory)); + duration: GetActionDuration(_radsLoadStartTime), category: _iadsCategory)); _rewardRetryAttempt = 0; Debug.Log( $"[SDK][Ads][Loaded] --- adUnitId:{adUnitId} Revenue:{adInfo.Revenue} Type:{adInfo.AdFormat} CreativeId:{adInfo.CreativeIdentifier}"); @@ -730,7 +777,7 @@ namespace Guru $"OnRewardedAdFailedEvent AdLoadFailureInfo:{errorInfo.AdLoadFailureInfo}, Message: {errorInfo.Message}"); // Analytics.ADRadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _radsLoadStartTime), _rewardCategory); Analytics.ADRadsFailed(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _radsLoadStartTime), category: _rewardCategory, + duration: GetActionDuration(_radsLoadStartTime), category: _rewardCategory, errorCode: (int)errorInfo.Code, waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); _rewardRetryAttempt++; @@ -748,7 +795,7 @@ namespace Guru $"OnRewardedAdFailedToDisplayEvent AdLoadFailureInfo:{errorInfo.AdLoadFailureInfo}, Message: {errorInfo.Message}"); // Analytics.ADRadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _radsLoadStartTime), _rewardCategory); Analytics.ADRadsFailed(AdParams.Build(adUnitId, - duration: GetAdsLoadDuration(ref _radsLoadStartTime), category: _rewardCategory, + duration: GetActionDuration(_radsShowStartTime), category: _rewardCategory, errorCode: (int)errorInfo.Code, waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); _rvFailAction?.Invoke("OnRewardedAdFailedToDisplayEvent"); @@ -761,16 +808,23 @@ namespace Guru { this.Log("OnRewardedAdDisplayedEvent"); // Analytics.ADRadsImp(adUnitId, _rewardCategory); - Analytics.ADRadsImp(AdParams.Build(adUnitId, category: _rewardCategory)); + string reviewCreativeId = GetReviewCreativeId(adInfo.CreativeIdentifier); + Analytics.ADRadsImp(AdParams.Build(adUnitId, adInfo, category: _rewardCategory, reviewCreativeId:reviewCreativeId)); } protected virtual void OnRewardedAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { this.Log("OnRewardedAdClickedEvent"); // Analytics.ADRadsClick(adUnitId, _rewardCategory); - Analytics.ADRadsClick(AdParams.Build(adUnitId, category: _rewardCategory)); + var impressionData = CreateImpressionData(adInfo, GetReviewCreativeId(adInfo.CreativeIdentifier)); + var data = impressionData.BuildEventData(); + if(string.IsNullOrEmpty(_rewardCategory)) _rewardCategory = "not_set"; + data["item_category"] = _rewardCategory; + data.Remove("ad_format"); + Analytics.ADRadsClick(data); } - + + // rads_close protected virtual void OnRewardedAdDismissedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { this.Log("OnRewardedAdDismissedEvent"); @@ -779,24 +833,37 @@ namespace Guru OnRewardClosed?.Invoke(); // Analytics.ADRadsClose(adUnitId, _rewardCategory); - Analytics.ADRadsClose(AdParams.Build(adUnitId, category: _rewardCategory)); + Analytics.ADRadsClose(AdParams.Build(adUnitId, duration:GetActionDuration(_radsShowStartTime), category: _rewardCategory)); //延时加载下一个广告 DelayCall(2.0f, RequestRewardedAD); - - } - + + // rads_rewarded protected virtual void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, - MaxSdkBase.AdInfo arg3) + MaxSdkBase.AdInfo adInfo) { this.Log("OnRewardedAdReceivedRewardEvent"); // Analytics.ADRadsRewarded(adUnitId, _rewardCategory); - Analytics.ADRadsRewarded(AdParams.Build(adUnitId, category: _rewardCategory)); + var impressionData = CreateImpressionData(adInfo, GetReviewCreativeId(adInfo.CreativeIdentifier)); + var data = impressionData.BuildEventData(); + if(string.IsNullOrEmpty(_rewardCategory)) _rewardCategory = "not_set"; + data["item_category"] = _rewardCategory; + data.Remove("ad_format"); + Analytics.ADRadsRewarded(data); // Rewarded ad was displayed and user should receive the reward _rvRewardAction?.Invoke(); } + // rads_paid + private void OnRewardedAdPaidEvent(AdImpressionData impressionData) + { + var data = impressionData.BuildEventData(); + if(string.IsNullOrEmpty(_rewardCategory)) _rewardCategory = "not_set"; + data["item_category"] = _rewardCategory; + data.Remove("ad_format"); + Analytics.ADRadsPaid(data); + } #endregion #region Ad Settings @@ -840,7 +907,36 @@ namespace Guru #endregion #region CreativeID - + + private string GetReviewCreativeId(string creativeId) + { + if (_reviewCreativeIds == null) + { + return ""; + } + + if (_reviewCreativeIds.TryGetValue(creativeId, out var reviewCreativeId)) + { + return reviewCreativeId; + } + return ""; + } + + private void SetReviewCreativeId(string creativeId, string reviewCreativeId) + { + if (_reviewCreativeIds == null) _reviewCreativeIds = new Dictionary(10); + + if (string.IsNullOrEmpty(reviewCreativeId)) return; + + _reviewCreativeIds[creativeId] = reviewCreativeId; + } + + private void SetImpressionData(MaxSdkBase.AdInfo adInfo, string reviewCreativeId = "", string platform = "") + { + if (string.IsNullOrEmpty(platform)) platform = Analytics.AdMAX; + _impressionCache[adInfo.CreativeIdentifier] = CreateImpressionData(adInfo, reviewCreativeId, platform); + } + /// /// 获取 AdReviewCreativeId /// @@ -856,14 +952,8 @@ namespace Guru return; } - if (_reviewCreativeIds == null) _reviewCreativeIds = new Dictionary(10); - - // 尝试直接上报广告收益 (可能存在异步上报的情况) - if (!TryReportImpression(adInfo, reviewCreativeId)) - { - _reviewCreativeIds[adInfo.CreativeIdentifier] = reviewCreativeId; // 如果上报未成功, 则缓存reviewCreativeId - } + TryReportImpression(adInfo, reviewCreativeId); } /// @@ -872,10 +962,9 @@ namespace Guru /// /// /// - private bool TryReportImpression(MaxSdk.AdInfo adInfo, string reviewCreativeId = "") + private void TryReportImpression(MaxSdk.AdInfo adInfo, string reviewCreativeId = "") { string creativeId = adInfo.CreativeIdentifier; - bool result = false; List removeList = new List(); if (_impressionCache.TryGetValue(creativeId, out var impressionData)) @@ -885,7 +974,11 @@ namespace Guru ReportAdsRevenue(impressionData); removeList.Add(creativeId); - result = true; + } + else + { + // 如果上报未成功, 则缓存reviewCreativeId + SetReviewCreativeId(adInfo.CreativeIdentifier, reviewCreativeId); } // 清理超过 3 秒未上报的数据 @@ -906,8 +999,6 @@ namespace Guru _reviewCreativeIds.Remove(k); } } - - return result; } #endregion diff --git a/Runtime/GuruCore/Runtime/Analytics/AdImpressionData.cs b/Runtime/GuruCore/Runtime/Analytics/AdImpressionData.cs index 77b86b3..d78a8c7 100644 --- a/Runtime/GuruCore/Runtime/Analytics/AdImpressionData.cs +++ b/Runtime/GuruCore/Runtime/Analytics/AdImpressionData.cs @@ -1,5 +1,7 @@ +using System.Collections.Generic; + namespace Guru { using System; @@ -36,5 +38,23 @@ namespace Guru } + public Dictionary BuildEventData() + { + var data = new Dictionary() + { + { "value", value }, + { "currency", currency }, + { "ad_platform", ad_platform }, + { "ad_format", ad_format }, + { "ad_source", ad_source }, + { "ad_unit_name", ad_unit_name }, + { "ad_placement", ad_placement }, + { "ad_creative_id", ad_creative_id }, + { "review_creative_id", review_creative_id }, + }; + + return data; + } + } } \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs index 611e155..3009471 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs @@ -36,15 +36,37 @@ namespace Guru if (adParams.duration > 0) data[ParameterDuration] = adParams.duration; + if (adParams.errorCode != 0) data[ParameterErrorCode] = adParams.errorCode; + if (!string.IsNullOrEmpty(adParams.networkName)) data[ParameterNetworkName] = adParams.networkName; - if (!string.IsNullOrEmpty(adParams.networkPlacement)) + + if (!string.IsNullOrEmpty(adParams.networkPlacement)) + { data[ParameterNetworkPlacement] = adParams.networkPlacement; + data[ParameterAdPlacement] = adParams.networkPlacement; + } + if (!string.IsNullOrEmpty(adParams.waterfallName)) data[ParameterWaterfall] = adParams.waterfallName; + if (!string.IsNullOrEmpty(adParams.creativeId)) + data[ParameterAdCreativeId] = adParams.creativeId; + + if (!string.IsNullOrEmpty(adParams.reviewCreativeId)) + data[ParameterReviewCreativeId] = adParams.reviewCreativeId; + + if (!string.IsNullOrEmpty(adParams.adPlatform)) + data[ParameterAdPlatform] = adParams.adPlatform; + + if (!string.IsNullOrEmpty(adParams.adSource)) + data[ParameterAdSource] = adParams.adSource; + + if (!string.IsNullOrEmpty(adParams.adFormat)) + data[ParameterAdFormat] = adParams.adFormat; + if (extra != null && extra.Count > 0) { foreach (var k in extra.Keys) @@ -128,7 +150,12 @@ namespace Guru /// public static void ADIadsClick(AdParams adParams) { - TrackEvent(EventIadsClick, BuildAdEventData(adParams)); + ADIadsClick(BuildAdEventData(adParams)); + } + + public static void ADIadsClick(Dictionary data) + { + TrackEvent(EventIadsClick, data); } /// @@ -139,6 +166,15 @@ namespace Guru TrackEvent(EventIadsClose, BuildAdEventData(adParams)); } + /// + /// 插屏广告收到奖励 + /// + /// + public static void ADIadsPaid(Dictionary data) + { + TrackEvent(EventIadsPaid, data); + } + //---------------------- REWARDS ------------------------- /// /// 广告开始加载 @@ -173,7 +209,11 @@ namespace Guru /// public static void ADRadsRewarded(AdParams adParams) { - var data = BuildAdEventData(adParams); + ADRadsRewarded(BuildAdEventData(adParams)); + } + + public static void ADRadsRewarded(Dictionary data) + { TrackEvent(EventRadsRewarded, data); if (RadsRewardCount == 0) @@ -183,6 +223,15 @@ namespace Guru } } + /// + /// 插屏广告收到奖励 + /// + /// + public static void ADRadsPaid(Dictionary data) + { + TrackEvent(EventRadsPaid, data); + } + private static int RadsRewardCount { @@ -203,7 +252,12 @@ namespace Guru /// public static void ADRadsClick(AdParams adParams) { - TrackEvent(EventRadsClick, BuildAdEventData(adParams)); + ADRadsClick(BuildAdEventData(adParams)); + } + + public static void ADRadsClick(Dictionary data) + { + TrackEvent(EventRadsClick, data); } /// @@ -260,10 +314,15 @@ namespace Guru public string category; public string networkName; public string networkPlacement; + public string adPlatform; + public string adSource; + public string adFormat; public string waterfallName; public string adUnitId; public int errorCode = 0; public int duration = 0; + public string creativeId; + public string reviewCreativeId; /// @@ -275,31 +334,47 @@ namespace Guru /// /// /// + /// + /// /// public static AdParams Build(string adUnitId, MaxSdkBase.AdInfo adInfo = null, string category = "", - int duration = 0, int errorCode = 0, string waterfallName = "") + int duration = 0, int errorCode = 0, string waterfallName = "", string reviewCreativeId = "", string adPlatform = "") { if (string.IsNullOrEmpty(adUnitId) && adInfo != null) adUnitId = adInfo.AdUnitIdentifier; var networkName = ""; var networkPlacement = ""; + var creativeId = ""; + var adSource = ""; + var adFormart = ""; + + if (string.IsNullOrEmpty(adPlatform)) adPlatform = Analytics.AdMAX; if (adInfo != null) { networkName = adInfo.NetworkName; networkPlacement = adInfo.NetworkPlacement; + creativeId = adInfo.CreativeIdentifier; + adSource = adInfo.NetworkName; + adFormart = adInfo.AdFormat; if (string.IsNullOrEmpty(waterfallName)) waterfallName = adInfo.WaterfallInfo?.Name ?? ""; + } var p = new AdParams() { adUnitId = adUnitId, + adPlatform = adPlatform, + adSource = adSource, + adFormat = adFormart, duration = duration, networkName = networkName, networkPlacement = networkPlacement, waterfallName = waterfallName, category = category, errorCode = errorCode, + creativeId = creativeId, + reviewCreativeId = reviewCreativeId, }; return p; } diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs index e6d9e44..f47b21a 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs @@ -161,7 +161,7 @@ namespace Guru /// public static void SetUserProperty(string propertyName, string propertyValue) { - Log.I(TAG,$"SetUserProperty -> propertyName:{propertyName}, propertyValue:{propertyValue}"); + Debug.Log($"{TAG} --- SetUserProperty -> propertyName:{propertyName}, propertyValue:{propertyValue}"); if (!IsReady) return;