From 1026f6f04ef7054bd55ddaa8b4377611974c3d25 Mon Sep 17 00:00:00 2001 From: huyfei Date: Thu, 1 Feb 2024 13:10:49 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E8=99=9A=E6=8B=9F?= =?UTF-8?q?=E5=B8=81=E8=8E=B7=E5=8F=96=E5=92=8C=E6=B6=88=E8=80=97=E7=82=B9?= =?UTF-8?q?=E4=BD=8D=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/ABTest/ABTestManager.cs | 23 ++-- .../Runtime/Analytics/Analytics.Const.cs | 4 + .../Runtime/Analytics/Analytics.Economic.cs | 115 ++++++++++++++++++ .../Analytics/Analytics.Economic.cs.meta | 3 + .../Analytics/Analytics.FirebaseDefine.cs | 2 - 5 files changed, 135 insertions(+), 12 deletions(-) create mode 100644 Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs create mode 100644 Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs.meta diff --git a/Runtime/ABTest/ABTestManager.cs b/Runtime/ABTest/ABTestManager.cs index 074346a..64a7432 100644 --- a/Runtime/ABTest/ABTestManager.cs +++ b/Runtime/ABTest/ABTestManager.cs @@ -1,23 +1,25 @@ -using System; -using System.Collections.Generic; -using Firebase.RemoteConfig; -using Guru; -using Guru.LitJson; -using UnityEngine; namespace Guru { - + using System; + using System.Collections.Generic; + using Firebase.RemoteConfig; + using Guru.LitJson; + using UnityEngine; /// /// ABTEST 管理器 /// public class ABTestManager : Singleton { - + public const string Version = "1.0.0"; private FirebaseRemoteConfig _remoteConfig; - private List _params; + + + internal static void LogCrashlytics(string msg) => Analytics.LogCrashlytics(msg); + + internal static void LogCrashlytics(Exception ex) => Analytics.LogCrashlytics(ex); #region 初始化 @@ -33,6 +35,7 @@ namespace Guru } catch (Exception e) { + LogCrashlytics(e); Debug.LogError(e); } @@ -152,7 +155,7 @@ namespace Guru catch (Exception e) { string msg = $"[AB] --- Parse AB Param Error -> Value: {value}\n{e.Message}"; - Analytics.LogCrashlytics(msg); + ABTestManager.LogCrashlytics(msg); Debug.Log(msg); } return null; diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs index 62b392c..f1d9dcf 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs @@ -111,5 +111,9 @@ namespace Guru public static readonly string PropertyATTStatus = "att_status"; // ATT 状态 public static readonly string PropertyGDPR = "gdpr"; // GDPR状态 + // 经济相关 + public static readonly string ParameterBalance = "balance"; // 用于余额 + public static readonly string ParameterSku = "sku"; // sku + public static readonly string ParameterVirtualCurrencyName = "virtual_currency_name"; // 虚拟货币名称 } } \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs new file mode 100644 index 0000000..3e18924 --- /dev/null +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs @@ -0,0 +1,115 @@ + + +namespace Guru +{ + using System.Collections.Generic; + using Facebook.Unity; + + /// + /// 经济统计接口 + /// + public partial class Analytics + { + //----------- 货币类型常用名称 ------------------ + + public const string CurrencyNameCoin = "coin"; + public const string CurrencyNameCash = "cash"; + public const string CurrencyNameDiamond = "diamond"; + public const string CurrencyNameGem = "gem"; + public const string CurrencyNameCrystal = "crystal"; + public const string CurrencyNameWood = "wood"; + public const string CurrencyNameStone = "stone"; + public const string CurrencyNameIron = "iron"; + public const string CurrencyNameOre = "ore"; + public const string CurrencyNameGas = "gas"; + public const string CurrencyNameGold = "gold"; + public const string CurrencyNameSilver = "silver"; + public const string CurrencyNameCopper = "copper"; + + //----------- 货币类型常用名称 ------------------ + + + + /// + /// 获取虚拟货币 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static void EarnVirtualCurrency(string currencyName, int value, int balance, + string method = "", + string levelName = "", + bool isIap = false, + string sku = "", + string scene = "") + { + if (isIap) method = "iap_buy"; + var data = new Dictionary() + { + { "virtual_currency_name", currencyName }, + { ParameterValue, value }, + { ParameterBalance, balance }, + { ParameterLevelName, levelName }, + { ParameterItemCategory, method }, + }; + + if (!string.IsNullOrEmpty(scene)) data[ParameterItemName] = scene; // 获取的虚拟货币或者道具的场景 + if (!string.IsNullOrEmpty(sku)) data[ParameterSku] = sku; // 商品的 sku + + LogEvent(EventEarnVirtualCurrency, data, new EventSetting() { EnableFirebaseAnalytics = true }); + + // FB 上报收入点 + FB.LogAppEvent(EventEarnVirtualCurrency, value, data); + } + + + public static void SpendVirtualCurrency(string currencyName, int value, int balance, + string method = "", + string levelName = "", + string scene = "") + { + var data = new Dictionary() + { + { ParameterVirtualCurrencyName, currencyName }, + { ParameterValue, value }, + { ParameterBalance, balance }, + { ParameterLevelName, levelName }, + { ParameterItemCategory, method }, + }; + + if (!string.IsNullOrEmpty(scene)) data[ParameterItemName] = scene; // 获取的虚拟货币或者道具的场景 + + LogEvent(EventSpendVirtualCurrency, data, new EventSetting() { EnableFirebaseAnalytics = true }); + + // FB 上报消费点 + FB.LogAppEvent(EventSpendVirtualCurrency, value, data); + // FB 上报消耗事件买量点 + FBSpentCredits(value, scene, method); // 点位信息有变化 + } + + + /// + /// FB 消耗点位上报 + /// + /// + /// + /// + private static void FBSpentCredits(int amount, string contentId, string contentType) + { + FB.LogAppEvent(AppEventName.SpentCredits, amount, + new Dictionary() + { + { AppEventParameterName.ContentID, contentId }, + { AppEventParameterName.ContentType, contentType }, + }); + } + + + + } +} \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs.meta b/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs.meta new file mode 100644 index 0000000..61c473d --- /dev/null +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Economic.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6dfc5d3bae614b8ea463c0f622130016 +timeCreated: 1706756422 \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs index 5f5e0b6..3f4f0e2 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs @@ -204,7 +204,5 @@ namespace Guru FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterTravelClass : "travel_class"; private static string ParameterValue => FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterValue : "value"; - private static string ParameterVirtualCurrencyName => - FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterVirtualCurrencyName : "virtual_currency_name"; } } \ No newline at end of file