From 3e91855d797de3f81723435405d4dbd208dfacb4 Mon Sep 17 00:00:00 2001 From: juncong lee Date: Sun, 31 Aug 2025 22:18:31 +0800 Subject: [PATCH] =?UTF-8?q?SDK=E4=B9=B0=E9=87=8F=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5=20ad=5Fnumber/ad=5Ffill=5F?= =?UTF-8?q?number?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdjustManager/AdjustTrackEvent.cs | 3 +- .../AdmobAdsManager/AdmobAdsManager.cs | 9 +- .../AdmobAdsManager/AdmobBannerAdManager.cs | 3 +- .../AdmobInterstitialAdManager.cs | 2 + .../AdmobAdsManager/AdmobRewardedAdManager.cs | 2 + .../AdmobAdsManager/AdmobSplashAdManager.cs | 2 + .../BigoAdsManager/BigoAdsManager.cs | 2 +- .../BigoInterstitialAdManager.cs | 2 + .../BigoAdsManager/BigoRewardedAdManager.cs | 2 + .../Events/AdsEvents/AdsKeyEvents.cs | 147 ++++++++++++++++++ .../Events/AdsEvents/AdsKeyEvents.cs.meta | 2 + .../AdsSDKManager/Events/New Folder.meta | 8 + .../MaxAdsManager/MaxAdsManager.cs | 6 +- .../TpnAdsManager/TpnAdsManager.cs | 5 +- .../AdsSDKManager/Utils/AdPlayCountManager.cs | 33 ++++ .../FireBaseAnalyticsManager.cs | 13 +- Assets/Script/Utils/PlayerPrefsUtils.cs | 8 + 17 files changed, 237 insertions(+), 12 deletions(-) create mode 100644 Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs create mode 100644 Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs.meta create mode 100644 Assets/Script/SDKManager/AdsSDKManager/Events/New Folder.meta diff --git a/Assets/Script/SDKManager/AdjustManager/AdjustTrackEvent.cs b/Assets/Script/SDKManager/AdjustManager/AdjustTrackEvent.cs index 915f3e7..e89535f 100644 --- a/Assets/Script/SDKManager/AdjustManager/AdjustTrackEvent.cs +++ b/Assets/Script/SDKManager/AdjustManager/AdjustTrackEvent.cs @@ -2,6 +2,7 @@ using Firebase.RemoteConfig; using Newtonsoft.Json; using Script.Common; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; public class AdjustTrackEvent : NormalSingleton @@ -15,7 +16,7 @@ public class AdjustTrackEvent : NormalSingleton AdjustEvent adjustEvent = new AdjustEvent(trackEvent); Adjust.TrackEvent(adjustEvent); } - + /// /// 广告收益上报 /// diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs index eceb50e..68a151a 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs @@ -368,7 +368,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(PlatformType.Admob.ToString(), loadedAdapterResponseInfo.AdSourceName, - placement, type.ToString(), + placement, type, adValue.Value / 1000000f, type == AdsType.Rewarded ? _rvPos : "", AdPlayCountManager.GetAdPlayCount(type)); @@ -382,6 +382,13 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager } #endregion + #region 广告行为事件上报 + public void TrackAdAction(AdapterResponseInfo loadedAdapterResponseInfo, double revenue, AdsType type, string placement) + { + + } + #endregion + } } diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs index bca195e..2d176f8 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs @@ -49,6 +49,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager _adRevenueCache[adUnitId] = AdmobUtils.GetBannerEcpm(bannerAds); LoggerUtils.Debug($"[Admob] banner -[Load]: {adUnitId} successfully"); onAdLoaded?.Invoke(adUnitId); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Banner); }; bannerAds.OnBannerAdLoadFailed += ((msg) => @@ -76,7 +77,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager bannerAds.OnAdClicked += () => { - // AdsActionEvents.TrackAdClicked(); + // AdsActionEvents.TrackAdClicked(PlatformType.Admob,); onAdClicked?.Invoke(); }; LoadAd(adUnitId); diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs index 7870ffc..9a4ca71 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using GoogleMobileAds.Api; using Script.SDKManager.AdsSDKManager.AdmobAdsManager.Utils; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager @@ -53,6 +54,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager LoggerUtils.Debug("Admob Interstitial ad loaded with response : " + ad.GetResponseInfo().ToString()); _interstitialAds[adUnitId] = ad; _adRevenueCache[adUnitId] = AdmobUtils.GetInterstitialAdEcpm(ad); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial); onAdLoaded?.Invoke(adUnitId); ad.OnAdPaid += (AdValue adValue) => diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs index 961fa8e..e743f47 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using GoogleMobileAds.Api; using Script.SDKManager.AdsSDKManager.AdmobAdsManager.Utils; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; @@ -54,6 +55,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager LoggerUtils.Debug("[Admob] rewarded ad loaded with response : " + ad.GetResponseInfo().ToString()); _rewardedAds[adUnitId] = ad; _adRevenueCache[adUnitId] = AdmobUtils.GetRewardedAdEcpm(ad); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Rewarded); onAdLoaded?.Invoke(adUnitId); ad.OnAdPaid += (AdValue adValue) => diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs index 65039f5..0bf5b61 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using GoogleMobileAds.Api; using Script.SDKManager.AdsSDKManager.AdmobAdsManager.Utils; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; using UnityEngine; @@ -55,6 +56,7 @@ namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager LoggerUtils.Debug("[Admob] appopen ad loaded with response : " + ad.GetResponseInfo().ToString()); _appOpenAds[adUnitId] = ad; _adRevenueCache[adUnitId] = AdmobUtils.GetAppOpenAdEcpm(ad); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Splash); onAdLoaded?.Invoke(adUnitId); ad.OnAdPaid += (AdValue adValue) => diff --git a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs index 52d50c0..0e1a7f3 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs @@ -234,7 +234,7 @@ namespace Script.SDKManager.AdsSDKManager.BigoAdsManager FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(ClientName, ClientName, placement, - type.ToString(), + type, revenue, type == AdsType.Rewarded ? _rvPos : "", AdPlayCountManager.GetAdPlayCount(type)); diff --git a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoInterstitialAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoInterstitialAdManager.cs index 0b016f1..3bfa5c6 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoInterstitialAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoInterstitialAdManager.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using BigoAds.Scripts.Api; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.SDKManager.AdsSDKManager.Utils; using Script.Utils; using UnityEngine; @@ -53,6 +54,7 @@ namespace Script.SDKManager.AdsSDKManager.BigoAdsManager _retryCounters[adUnitId] = 0; _adRevenueCache[adUnitId] = GetAdRevenue(interstitialAd); LoggerUtils.Debug($"[Bigo] Interstitial -[Load]: {adUnitId} successfully"); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial); onAdLoaded?.Invoke(adUnitId); }; diff --git a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoRewardedAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoRewardedAdManager.cs index 34e3d77..c208386 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoRewardedAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoRewardedAdManager.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using BigoAds.Scripts.Api; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; using UnityEngine; @@ -52,6 +53,7 @@ namespace Script.SDKManager.AdsSDKManager.BigoAdsManager _retryCounters[adUnitId] = 0; _adRevenueCache[adUnitId] = GetAdRevenue(rewardedAd); LoggerUtils.Debug($"[Bigo] Rewarded-[Load]: {adUnitId} successfully"); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Rewarded); onAdLoaded?.Invoke(adUnitId); }; diff --git a/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs b/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs new file mode 100644 index 0000000..352ec37 --- /dev/null +++ b/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs @@ -0,0 +1,147 @@ +using System.Collections; +using System.Collections.Generic; +using Firebase.Analytics; +using Newtonsoft.Json; +using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Utils; +using Script.Utils; +using Unity.VisualScripting.Antlr3.Runtime; +using UnityEngine; + +namespace Script.SDKManager.AdsSDKManager.Events.AdsEvents +{ + public class AdsKeyEvents : NormalSingleton + { + private List _adCountData = new List(); + private List _adFPUData = new List(); + private List _adTotalRevenueData = new List(); + + public void InitData() + { + var countData = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("ad_number"); + var fpuData = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("ad_fill_number"); + var totalRevenueData = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("ad_revenue_count"); + LoggerUtils.Debug("[keyevents] 获取在线参数,countData:" + countData + " fpuData:" + fpuData + " totalRevenueData:" + totalRevenueData); + try + { + _adCountData = JsonConvert.DeserializeObject>(countData); + _adFPUData = JsonConvert.DeserializeObject>(fpuData); + _adTotalRevenueData = JsonConvert.DeserializeObject>(totalRevenueData); + } + catch + { + + } + } + + #region AdCount + public void LogAdCountEvents(AdsType adType, double ecpm) + { + if (_adCountData == null || _adCountData.Count == 0) return; + foreach (var item in _adCountData) + { + // 本地存储 key + var storeName = "ad_number_" + item.Name; + + // 包含当前广告类型 + LoggerUtils.Debug("[keyevents] adcount 当前广告类型:" + adType + " 在线参数数组:" + JsonConvert.SerializeObject(item.AdType, Formatting.Indented) + " 在线参数ecpm:" + item.ECPM + " 当前广告ecpm" + ecpm * 1000 + " name:" + item.Name); + if (item.AdType.Contains((int)adType)) + { + if (item.ECPM == 0 || ecpm * 1000 >= item.ECPM) + { + LogEventByCount(storeName, item.IPU, storeName, item.adjust_token); + } + } + } + } + + private void LogEventByCount(string m_key, int m_ipu, string m_eventName, string m_token) + { + AdPlayCountManager.IncrementKeyEventPlayCount(m_key); + var showCounts = AdPlayCountManager.GetKeyEventPlayCount(m_key); + LoggerUtils.Debug("[keyevents] adcount count:" + showCounts + " ipu:" + m_ipu + " eventName:" + m_key); + if (showCounts >= m_ipu) + { + // 未上报过 + if (PlayerPrefsUtils.IfFirstCheckPlayerPrefs(m_key)) + { + AdjustTrackEvent.Instance.TrackEvent(m_token); + FireBaseAnalyticsManager.Instance.LogEvent(m_key); + ShuShuEvent.Instance.Track(m_key); + LoggerUtils.Debug("[keyevents] adcount key:" + m_key + " ipu" + m_ipu + " eventName:" + m_eventName + " token:" + m_token); + } + } + + } + #endregion + + + #region FPU + public void LogAdFPUEvents(AdsType adType) + { + if (_adFPUData == null || _adFPUData.Count == 0) return; + foreach (var item in _adFPUData) + { + // 本地存储 key + var storeName = "FPU_" + item.Name; + + // 包含当前广告类型 + LoggerUtils.Debug("[keyevents] adcount 当前广告类型:" + adType + " 在线参数数组:" + JsonConvert.SerializeObject(item.AdType, Formatting.Indented) + " FPU:" + item.FPU + " 当前广告ecpm" + " name:" + item.Name); + if (item.AdType.Contains((int)adType)) + { + LogEventByFPU(storeName, item.FPU, storeName, item.adjust_token); + } + } + } + + private void LogEventByFPU(string m_key, int m_fpu, string m_eventName, string m_token) + { + AdPlayCountManager.IncrementKeyEventPlayCount(m_key); + var showCounts = AdPlayCountManager.GetKeyEventPlayCount(m_key); + LoggerUtils.Debug("[keyevents] adcount count:" + showCounts + " fpu:" + m_fpu + " eventName:" + m_key); + if (showCounts >= m_fpu) + { + // 未上报过 + if (PlayerPrefsUtils.IfFirstCheckPlayerPrefs(m_key)) + { + AdjustTrackEvent.Instance.TrackEvent(m_token); + FireBaseAnalyticsManager.Instance.LogEvent(m_key); + ShuShuEvent.Instance.Track(m_key); + LoggerUtils.Debug("[keyevents] adcount key:" + m_key + " fpu" + m_fpu + " eventName:" + m_eventName + " token:" + m_token); + } + } + + } + } + #endregion + + [System.Serializable] + public class AdCountData + { + public string Name; + public int IPU; + public float ECPM; + public List AdType; + public string adjust_token; + } + + [System.Serializable] + public class AdFPUData + { + public string Name; + public int FPU; + public List AdType; + public string adjust_token; + } + + [System.Serializable] + public class AdTotalRevenurData + { + public string Name; + public string Revenue; + public int reset_after_trigger; + public List AdType; + public string adjust_token; + } + +} \ No newline at end of file diff --git a/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs.meta b/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs.meta new file mode 100644 index 0000000..553d094 --- /dev/null +++ b/Assets/Script/SDKManager/AdsSDKManager/Events/AdsEvents/AdsKeyEvents.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d9c7ae999fc264fa6ad5106900a2b381 \ No newline at end of file diff --git a/Assets/Script/SDKManager/AdsSDKManager/Events/New Folder.meta b/Assets/Script/SDKManager/AdsSDKManager/Events/New Folder.meta new file mode 100644 index 0000000..37089cd --- /dev/null +++ b/Assets/Script/SDKManager/AdsSDKManager/Events/New Folder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bba9020c00e7b494b80ed377282b6760 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs index 7295fa8..322c1db 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs @@ -5,6 +5,7 @@ using System.Net.Security; using Firebase.Analytics; using Script.Common; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.SDKManager.AdsSDKManager.Utils; using Script.Utils; using UnityEngine; @@ -104,6 +105,7 @@ namespace Script.SDKManager.AdsSDKManager.MaxAdsManager private void OnRewardedAdLoadedEvent(string adunit, MaxSdkBase.AdInfo adInfo) { LoggerUtils.Debug("[Max] OnRewardedAdLoadedEvent network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Rewarded); _rewardAdInfo = adInfo; _rewardRetryAttempt = 0; } @@ -187,7 +189,7 @@ namespace Script.SDKManager.AdsSDKManager.MaxAdsManager private void OnInterstitialLoadedEvent(string adunit, MaxSdkBase.AdInfo adInfo) { LoggerUtils.Debug("[Max] OnInterstitialLoadedEvent network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); - + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial); _interAdInfo = adInfo; _interRetryAttempt = 0; } @@ -266,7 +268,7 @@ namespace Script.SDKManager.AdsSDKManager.MaxAdsManager FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(ClientName, adInfo.NetworkName, adInfo.AdUnitIdentifier, - type.ToString(), + type, adInfo.Revenue, type == AdsType.Rewarded ? _rvPos : "", AdPlayCountManager.GetAdPlayCount(type)); diff --git a/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs index 4776a75..fdd94e8 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs @@ -6,6 +6,7 @@ using AnyThinkAds.Api; using AnyThinkAds.ThirdParty.LitJson; using Script.Common; using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.SDKManager.AdsSDKManager.Utils; using Script.Utils; using SDKManager.AdsSDKManager.Utils; @@ -109,10 +110,12 @@ namespace Script.SDKManager.AdsSDKManager.TpnAdsManager if (erg.placementId.Equals(topon_interstitial_units)) { LoggerUtils.Debug("[Tpn] ads tpn topon interstitial loaded"); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial); } else if (erg.placementId.Equals(topon_rewarded_units)) { LoggerUtils.Debug("[Tpn] ads tpn topon rewarded loaded"); + AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Rewarded); } } @@ -232,7 +235,7 @@ namespace Script.SDKManager.AdsSDKManager.TpnAdsManager FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(ClientName, ClientName + "_" + erg.callbackInfo.network_firm_id, erg.callbackInfo.adunit_id, - erg.placementId.Equals(topon_rewarded_units) ? AdsType.Rewarded.ToString() : AdsType.Interstitial.ToString(), + erg.placementId.Equals(topon_rewarded_units) ? AdsType.Rewarded : AdsType.Interstitial, erg.callbackInfo.publisher_revenue, erg.placementId.Equals(topon_rewarded_units) ? _rvPos : "", AdPlayCountManager.GetAdPlayCount(erg.placementId.Equals(topon_rewarded_units) ? AdsType.Rewarded : AdsType.Interstitial)); diff --git a/Assets/Script/SDKManager/AdsSDKManager/Utils/AdPlayCountManager.cs b/Assets/Script/SDKManager/AdsSDKManager/Utils/AdPlayCountManager.cs index ce865f5..69bc0fa 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/Utils/AdPlayCountManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/Utils/AdPlayCountManager.cs @@ -11,6 +11,39 @@ namespace Script.SDKManager.AdsSDKManager.Utils { private const string PLAY_COUNT_SUFFIX = "_PLAY_COUNT"; + // 关键事件数据 + public static int GetKeyEventPlayCount(string key) + { + try + { + return PlayerPrefsUtils.GetPlayerPrefsInt(key, 0); + } + catch (Exception ex) + { + return 0; + } + } + + public static void SetKeyEventPlayCount(string key, int count) + { + try + { + PlayerPrefsUtils.SavePlayerPrefsInt(key, count); + } + catch (Exception ex) + { + LoggerUtils.Error($"设置广告播放次数失败: {ex.Message}"); + } + } + + public static void IncrementKeyEventPlayCount(string key) + { + int currentCount = GetKeyEventPlayCount(key); + SetKeyEventPlayCount(key, currentCount + 1); + } + + + public static int GetAdPlayCount(AdsType adsType) { try diff --git a/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs b/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs index b34478c..d4f21ef 100644 --- a/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs +++ b/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs @@ -2,6 +2,8 @@ using Firebase.Analytics; using Newtonsoft.Json; using Script.Common; +using Script.SDKManager.AdsSDKManager.Constant; +using Script.SDKManager.AdsSDKManager.Events.AdsEvents; using Script.Utils; /// @@ -48,8 +50,8 @@ public class FireBaseAnalyticsManager : NormalSingleton /// FireBase收益上报 /// @@ -60,21 +62,22 @@ public class FireBaseAnalyticsManager : NormalSingleton单次展示收益 /// 广告展示点位 /// 第几次展示该格式的广告 - public void OnAdRevenueEvent(string ad_platform, string ad_source, string ad_unit_name, string ad_format, double revenue, string position, int number) + public void OnAdRevenueEvent(string ad_platform, string ad_source, string ad_unit_name, AdsType ad_format, double revenue, string position, int number) { var impressionParameters = new[] { new Firebase.Analytics.Parameter("ad_platform", ad_platform), new Firebase.Analytics.Parameter("ad_source", ad_source), new Firebase.Analytics.Parameter("ad_unit_name",ad_unit_name), - new Firebase.Analytics.Parameter("ad_format", ad_format), + new Firebase.Analytics.Parameter("ad_format", ad_format.ToString()), new Firebase.Analytics.Parameter("value", revenue), new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD - new Firebase.Analytics.Parameter("position", position), + new Firebase.Analytics.Parameter("position", position), new Firebase.Analytics.Parameter("number", number), }; string name = GetName(); Firebase.Analytics.FirebaseAnalytics.LogEvent(name, impressionParameters); + AdsKeyEvents.Instance.LogAdCountEvents(ad_format, revenue); } /// diff --git a/Assets/Script/Utils/PlayerPrefsUtils.cs b/Assets/Script/Utils/PlayerPrefsUtils.cs index 03ea95b..6ae5e8e 100644 --- a/Assets/Script/Utils/PlayerPrefsUtils.cs +++ b/Assets/Script/Utils/PlayerPrefsUtils.cs @@ -42,5 +42,13 @@ namespace Script.Utils PlayerPrefs.SetString(string.Format("{0}{1}", BXSdk_PREFIX, _key), _nValue); PlayerPrefs.Save(); } + + public static bool IfFirstCheckPlayerPrefs(string _key) + { + var isFirstClick = PlayerPrefs.GetInt(_key, 0) == 0; + PlayerPrefs.SetInt(_key, 1); + PlayerPrefs.Save(); + return isFirstClick; + } } } \ No newline at end of file