From 3972dddb25b548eb3fe1ac61fcae187058d5c158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=89=E5=B3=B0?= Date: Sun, 31 Aug 2025 17:38:25 +0800 Subject: [PATCH] =?UTF-8?q?FireBase=E6=94=B6=E7=9B=8A=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FireBaseAnalyticsManager.cs | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs b/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs index f5c8266..2786bd0 100644 --- a/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs +++ b/Assets/Script/SDKManager/FirebaseManager/FireBaseAnalyticsManager.cs @@ -1,5 +1,6 @@ using Firebase.Analytics; +using Newtonsoft.Json; using SDK.Utils; /// @@ -46,4 +47,64 @@ public class FireBaseAnalyticsManager : NormalSingleton + /// FireBase收益上报 + /// + private void OnAdRevenueEvent(string ad_platform, string ad_source, string ad_unit_name, string ad_format, double revenue) + { + 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("value", revenue), + new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD + }; + + string name = GetName(); + Firebase.Analytics.FirebaseAnalytics.LogEvent(name, impressionParameters); + } + + /// + /// 收益分离 + /// + /// + private string GetName() + { + string name = "ad_impression"; + //获取在线参数 + string json = FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("revenue_fir"); + if (string.IsNullOrEmpty(json)) + { + return name; + } + var revenueAdjs = JsonConvert.DeserializeObject(json); + if (revenueAdjs == null && revenueAdjs.Length == 0) + { + return name; + } + + int totalRate = 0; + //获取全部概率 + foreach (var item in revenueAdjs) + { + totalRate += item.rate; + } + //开始随机 + int randomValue = UnityEngine.Random.Range(0, totalRate); + int accumulatedRate = 0; + + //根据随机值定位 + foreach (var item in revenueAdjs) + { + accumulatedRate += item.rate; + if (randomValue < accumulatedRate) + { + return item.name; + } + } + + return name; + } }