From a1ad7b31de2223afea343d65e0279877283aaafc Mon Sep 17 00:00:00 2001 From: huyufei Date: Fri, 9 Aug 2024 02:39:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=80=90always=E3=80=91=E9=87=8D?= =?UTF-8?q?=E5=90=AFappguru=5Fanalytics=5Fexp=E5=B1=9E=E6=80=A7=E5=80=BC?= =?UTF-8?q?=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1029410 --user=yufei.hu 【always】重启appguru_analytics_exp属性值变化 https://www.tapd.cn/35322409/s/1163023 Signed-off-by: huyufei --- .../Plugins/Android/U3DAnalytics-1.12.0.aar | Bin 12595 -> 12487 bytes .../Runtime/Script/GuruAnalytics.cs | 7 +- .../Script/GuruAnalyticsConfigManager.cs | 26 +- .../Analytics/Analytics.AdjustToken.cs | 42 +- .../Runtime/Analytics/Analytics.Ads.cs | 2 +- .../Runtime/Analytics/Analytics.Const.cs | 2 +- .../Runtime/Analytics/Analytics.Custom.cs | 4 +- .../Analytics/Analytics.FirebaseDefine.cs | 2 +- .../Runtime/Analytics/Analytics.Property.cs | 669 ++++-------------- .../Analytics/Analytics.TemplateDefine.cs | 24 +- .../GuruCore/Runtime/Analytics/Analytics.cs | 27 +- 11 files changed, 234 insertions(+), 571 deletions(-) diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.12.0.aar b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.12.0.aar index 52e9e650f93b8875629d13ffb968d24431a164f8..c2b82be8a67a9035772edb7a311fd881e5b28fdc 100644 GIT binary patch delta 11838 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 delta 11931 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 public void SetUserProperty(string key, string value) { - if (!_isReady) return; + if (!_isReady) + { + Debug.LogWarning($"{Tag} --- is Not Ready SetUserProperty: [{key}, {value}] failed"); + return; + } if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value)) return; // CacheUserProperty(key, value); // 添加用户属性 // ReSharper disable once Unity.PerformanceCriticalCodeInvocation + Debug.Log($"{Tag} --- SetUserProperty: [{key}, {value}]"); Agent.SetUserProperty(key, value); } /// diff --git a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalyticsConfigManager.cs b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalyticsConfigManager.cs index fdcd9bf..4abd4fb 100644 --- a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalyticsConfigManager.cs +++ b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalyticsConfigManager.cs @@ -81,6 +81,26 @@ namespace Guru }] }"; + /// + /// 默认的本地配置 + /// 2024-08-06 + /// + private const string DEFAULT_GURU_ANALYTICS_EXP2 = @"{ + ""enable"": true, + ""experiments"": [{ + ""groupId"": ""B"", + ""baseUrl"": ""https://collect.saas.castbox.fm"", + ""uploadIpAddress"": [""13.248.248.135"", ""3.33.195.44""], + ""enableErrorLog"": false + }, + { + ""groupId"": ""C"", + ""baseUrl"": ""https://collect3.saas.castbox.fm"", + ""uploadIpAddress"": [""34.107.185.54""], + ""enableErrorLog"": false + }] +}"; + /// /// 获取默认数据 /// @@ -103,7 +123,8 @@ namespace Guru // 拉取云控数据 var json = ""; - if(FirebaseUtil.IsFirebaseInitialized && FirebaseRemoteConfig.DefaultInstance.Keys.Contains(KEY_GURU_ANALYTICS_EXP)) + if(FirebaseUtil.IsFirebaseInitialized + && FirebaseRemoteConfig.DefaultInstance.Keys.Contains(KEY_GURU_ANALYTICS_EXP)) json = FirebaseRemoteConfig.DefaultInstance.GetValue(GuruAnalyticsConfigManager.KEY_GURU_ANALYTICS_EXP).StringValue; if (string.IsNullOrEmpty(json)) @@ -140,7 +161,8 @@ namespace Guru config = DefaultData.GetFirstConfig(); // 默认是 B 组 if(IsDebug) Debug.LogWarning($"{Tag} --- #3.1 Try get config is Null -> using Default config"); } - + + LocalExperimentGroupId = config.groupId; return config; } diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.AdjustToken.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.AdjustToken.cs index 55c75fd..12ab00d 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.AdjustToken.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.AdjustToken.cs @@ -4,22 +4,22 @@ using com.adjust.sdk; namespace Guru { //Adjust上报事件封装 - public static partial class Analytics + public partial class Analytics { - private static Dictionary AdjustEventTokenDict; - - private static void InitAdjustEventTokenDict() + private static Dictionary InitAdjustEventTokenDict() { - AdjustEventTokenDict = new Dictionary(); + var dict = new Dictionary(); foreach (var adjustEvent in GuruSettings.Instance.AnalyticsSetting.AdjustEventList) { #if UNITY_ANDROID || UNITY_EDITOR - AdjustEventTokenDict[adjustEvent.EventName] = adjustEvent.AndroidToken; + dict[adjustEvent.EventName] = adjustEvent.AndroidToken; #elif UNITY_IOS - AdjustEventTokenDict[adjustEvent.EventName] = adjustEvent.IOSToken; + dict[adjustEvent.EventName] = adjustEvent.IOSToken; #endif } + + return dict; } internal static AdjustEvent CreateAdjustEvent(string eventName) @@ -33,23 +33,18 @@ namespace Guru return new AdjustEvent(tokenID); } - public static AdjustEvent AddEventParameter(this AdjustEvent adjustEvent, string key, string value) - { - adjustEvent.addCallbackParameter(key, value); - adjustEvent.addPartnerParameter(key, value); - return adjustEvent; - } + private static Dictionary _adjustEventTokenDict; public static string GetAdjustEventToken(string eventName) { - if (AdjustEventTokenDict == null) + if (_adjustEventTokenDict == null) { - InitAdjustEventTokenDict(); + _adjustEventTokenDict = InitAdjustEventTokenDict(); } - - if (AdjustEventTokenDict.ContainsKey(eventName)) + + if (_adjustEventTokenDict.TryGetValue(eventName, out var token)) { - return AdjustEventTokenDict[eventName]; + return token; } else { @@ -58,4 +53,15 @@ namespace Guru } } } + + internal static class AdjustEventExtension + { + public static AdjustEvent AddEventParameter(this AdjustEvent adjustEvent, string key, string value) + { + adjustEvent.addCallbackParameter(key, value); + adjustEvent.addPartnerParameter(key, value); + return adjustEvent; + } + } + } \ 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 390e184..a491c9b 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs @@ -5,7 +5,7 @@ namespace Guru using System.Collections.Generic; using UnityEngine; - public static partial class Analytics + public partial class Analytics { #region 广告属性 //------ 默认值 ------- diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs index c960a0b..07bcbd3 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs @@ -12,7 +12,7 @@ namespace Guru } //打点常量定义 - public static partial class Analytics + public partial class Analytics { public const string TAG = "[GA]"; // 美元符号 diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs index 0d49b1c..18260af 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs @@ -12,7 +12,7 @@ namespace Guru { private static DateTime _lastReportRateDate; //上次上报信息的日期 - private static double _reportSuccessInterval; // 上报频率 + private const double _reportSuccessInterval = 120; // 上报频率 #if UNITY_IOS private const string VALUE_NOT_FOR_IOS = "not_support_for_ios"; #endif @@ -31,7 +31,6 @@ namespace Guru string deviceInfo = new DeviceInfoData().ToString(); _lastReportRateDate = DateTime.Now; - _reportSuccessInterval = 120; // 2分钟上报一次 Debug.Log($"{TAG} [guru_analytic] --- InitGuruAnalyticService: IsDebug:{IsDebug} firebaseId:{firebaseId}"); @@ -40,7 +39,6 @@ namespace Guru OnGuruAnalyticsInitComplete(); Debug.Log($"{TAG} [guru_analytic]--- Guru EXP: GroupId: {GuruAnalytics.Instance.ExperimentGroupId}"); SetAnalyticsExperimentGroup(GuruAnalytics.Instance.ExperimentGroupId); - ApplyAllMidWareProperties(); }, IsDebug, firebaseId); // Android 初始化 } diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs index a34d3e4..baa9846 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs @@ -3,7 +3,7 @@ namespace Guru //https://firebase.google.com/docs/reference/cpp/group/parameter-names //Firebase内置定义事件名称和参数名称 - public static partial class Analytics + public partial class Analytics { internal const string EventAdImpression = "ad_impression"; internal const string EventAddPaymentInfo = "add_payment_info"; diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Property.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Property.cs index 4e48a54..a247479 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Property.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Property.cs @@ -1,75 +1,42 @@ namespace Guru { - using System; - using UnityEngine; - using Firebase.Analytics; - using System.Collections.Generic; - /// /// 上报用户属性逻辑 /// Firebase 中台属性上报: https://docs.google.com/spreadsheets/d/1N47rXgjatRHFvzWWx0Hqv5C1D9NHHGbggi6pQ65c-zQ/edit?gid=1858695240#gid=1858695240 /// Guru自打点 中台属性上报:https://docs.google.com/spreadsheets/d/1N47rXgjatRHFvzWWx0Hqv5C1D9NHHGbggi6pQ65c-zQ/edit?gid=1736574940#gid=1736574940 /// - public static partial class Analytics + public partial class Analytics { - - - #region Old Properties - - /// - /// B_Level 属性 - /// - public static int BLevel - { - get => PlayerPrefs.GetInt(nameof(BLevel), 0); - set => PlayerPrefs.SetInt(nameof(BLevel), value); - } - /// - /// B_Play 属性 - /// - public static int BPlay - { - get => PlayerPrefs.GetInt(nameof(BPlay), 0); - set => PlayerPrefs.SetInt(nameof(BPlay), value); - } - - #endregion + #region Update all neccessary properties //---------------- 设置所有必要的属性 --------------------- - - /// - /// 应用所有的中台属性 - /// - private static void ApplyAllMidWareProperties() - { - MidWarePropertiesManager.Instance.ApplyAllProperties(); - } - /// /// 设置用户ID /// public static void SetUid(string uid) { - MidWarePropertiesManager.Instance.ReportUid(uid); + _propertiesManager.ReportUid(uid); } /// - /// 设置用户ID + /// 设置用户 b_level /// + // TODO: 该值不应该有机会被用户调用 public static void SetBLevel(int bLevel) { - MidWarePropertiesManager.Instance.ReportBLevel($"{bLevel}"); + _propertiesManager.ReportBLevel($"{bLevel}"); } /// - /// 设置用户ID + /// 设置用户 b_play /// + // TODO: 该值不应该有机会被用户调用 public static void SetBPlay(int bPlay) { - MidWarePropertiesManager.Instance.ReportBPlay($"{bPlay}"); + _propertiesManager.ReportBPlay($"{bPlay}"); } /// @@ -78,7 +45,7 @@ namespace Guru /// private static void SetAnalyticsExperimentGroup(string groupName) { - MidWarePropertiesManager.Instance.ReportAnalyticsExperimentGroup(groupName); + _propertiesManager.ReportAnalyticsExperimentGroup(groupName); } /// @@ -87,7 +54,7 @@ namespace Guru /// internal static void SetSignUpMethod(string methodName) { - MidWarePropertiesManager.Instance.ReportSignUpMethod(methodName); + _propertiesManager.ReportSignUpMethod(methodName); } /// @@ -96,7 +63,7 @@ namespace Guru /// private static void SetDeviceId(string deviceId) { - MidWarePropertiesManager.Instance.ReportDeviceId(deviceId); + _propertiesManager.ReportDeviceId(deviceId); } /// @@ -105,7 +72,7 @@ namespace Guru /// private static void SetFirstOpenTime(string firstOpenTime) { - MidWarePropertiesManager.Instance.ReportFirstOpenTime(firstOpenTime); + _propertiesManager.ReportFirstOpenTime(firstOpenTime); } /// @@ -114,7 +81,7 @@ namespace Guru /// public static void SetIsIapUser(bool isIapUser) { - MidWarePropertiesManager.Instance.ReportIsIapUser(isIapUser); + _propertiesManager.ReportIsIapUser(isIapUser? "true":"false"); } /// @@ -123,7 +90,7 @@ namespace Guru /// public static void SetNetworkStatus(string networkStatus) { - MidWarePropertiesManager.Instance.ReportNetworkStatus(networkStatus); + _propertiesManager.ReportNetworkStatus(networkStatus); } /// @@ -132,7 +99,7 @@ namespace Guru /// public static void SetAdjustId(string adjustId) { - MidWarePropertiesManager.Instance.ReportAdjustId(adjustId); + _propertiesManager.ReportAdjustId(adjustId); } /// @@ -141,7 +108,7 @@ namespace Guru /// public static void SetAndroidId(string androidId) { - MidWarePropertiesManager.Instance.ReportAndroidId(androidId); + _propertiesManager.ReportAndroidId(androidId); } /// @@ -150,7 +117,7 @@ namespace Guru /// public static void SetAttStatus(string attStatus) { - MidWarePropertiesManager.Instance.ReportAttStatus(attStatus); + _propertiesManager.ReportAttStatus(attStatus); } /// @@ -159,7 +126,7 @@ namespace Guru /// public static void SetNotiPerm(string notiPrem) { - MidWarePropertiesManager.Instance.ReportNotiPerm(notiPrem); + _propertiesManager.ReportNotiPerm(notiPrem); } /// @@ -167,360 +134,34 @@ namespace Guru /// public static void SetGoogleAdId(string adId) { - MidWarePropertiesManager.Instance.ReportGoogleAdId(adId); + _propertiesManager.ReportGoogleAdId(adId); } public static void SetIDFV(string idfv) { - MidWarePropertiesManager.Instance.ReportIDFV(idfv); + _propertiesManager.ReportIDFV(idfv); } public static void SetIDFA(string idfa) { - MidWarePropertiesManager.Instance.ReportIDFA(idfa); + _propertiesManager.ReportIDFA(idfa); } - + #endregion - #region 中台属性管理 - /// - /// 中台必要用户属性对象 - /// - private abstract class AbstractMidWareProperty - { - public readonly string key; - protected readonly string value; - private readonly ReportPropertyTarget reportTarget; - private bool HasValue => !string.IsNullOrEmpty(value); + } - protected AbstractMidWareProperty(string key, string value, - ReportPropertyTarget reportTarget = ReportPropertyTarget.Both) - { - this.key = key; - this.value = value; - this.reportTarget = reportTarget; - } + #region 中台属性管理 - public void Report() - { - if (!HasValue) return; - BeforeReportProperty(); - ReportPropertyByTarget(); - } - - protected abstract void BeforeReportProperty(); - - private void ReportPropertyByTarget() - { - if (!HasValue) return; - switch (reportTarget) - { - case ReportPropertyTarget.Firebase: - // Firebase - _firebaseEventDriver.AddProperty(key, value); - break; - - case ReportPropertyTarget.Guru: - // Guru - _guruEventDriver.AddProperty(key, value); - break; - - case ReportPropertyTarget.Both: - // 双平台上报 - _firebaseEventDriver.AddProperty(key, value); - _guruEventDriver.AddProperty(key, value); - break; - - default: - throw new ArgumentOutOfRangeException(); - } - } - - } - - /// - /// UID - /// - private class MidWarePropertyUid : AbstractMidWareProperty - { - public MidWarePropertyUid(string value) - : base(PropertyUserID, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - _firebaseEventDriver.SetUid(value); - _guruEventDriver.SetUid(value); - } - } - /// - /// BLevel - /// - private class MidWarePropertyBLevel : AbstractMidWareProperty - { - public MidWarePropertyBLevel(string value) - : base(PropertyLevel, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - } - } - /// - /// BLevel - /// - private class MidWarePropertyBPlay : AbstractMidWareProperty - { - public MidWarePropertyBPlay(string value) - : base(PropertyPlay, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - } - } - - - /// - /// SignUpMethod - /// - private class MidWarePropertySignUpMethod : AbstractMidWareProperty - { - public MidWarePropertySignUpMethod(string value) - : base(PropertySignUpMethod, value, ReportPropertyTarget.Both) - { - - } - protected override void BeforeReportProperty() - { - } - } - /// - /// AnalyticsExperimentGroup - /// - private class MidWarePropertyAnalyticsExperimentGroup : AbstractMidWareProperty - { - public MidWarePropertyAnalyticsExperimentGroup(string value) - : base(PropertyAnalyticsExperimentalGroup, value, ReportPropertyTarget.Both) - { - - } - protected override void BeforeReportProperty() - { - } - } - /// - /// DeviceId - /// - private class MidWarePropertyDeviceId : AbstractMidWareProperty - { - public MidWarePropertyDeviceId(string value) - : base(PropertyDeviceID, value, ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetDeviceId(value); - } - } - /// - /// FirstOpenTime - /// - private class MidWarePropertyFirstOpenTime : AbstractMidWareProperty - { - public MidWarePropertyFirstOpenTime(string value) - : base(PropertyFirstOpenTime, value, ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() - { - } - } - /// - /// IsIapUser - /// - private class MidWarePropertyIsIapUser : AbstractMidWareProperty - { - public MidWarePropertyIsIapUser(bool value) - : base(PropertyIsIAPUser, value?"true":"false", ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() { } - } - - /// - /// Network - /// - private class MidWarePropertyNetwork : AbstractMidWareProperty - { - public MidWarePropertyNetwork(string value) - : base(PropertyNetwork, value, ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() { } - } - /// - /// AdjustId - /// - private class MidWarePropertyAdjustId : AbstractMidWareProperty - { - public MidWarePropertyAdjustId(string value) - : base(PropertyAdjustId, value, ReportPropertyTarget.Firebase) - { - - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetAdjustId(value); - } - } - - /// - /// AttStatus - /// - private class MidWarePropertyAttStatus : AbstractMidWareProperty - { - public MidWarePropertyAttStatus(string value) - : base(PropertyAttStatus, value, ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() - { - - } - } - - /// - /// AttStatus - /// - private class MidWarePropertyNotiPerm : AbstractMidWareProperty - { - public MidWarePropertyNotiPerm(string value) - : base(PropertyNotiPerm, value, ReportPropertyTarget.Both) - { - - } - - protected override void BeforeReportProperty() - { - - } - } - - - /// - /// AndroidId - /// - private class MidWarePropertyAndroidId : AbstractMidWareProperty - { - public MidWarePropertyAndroidId(string value) - : base(PropertyAndroidId, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetAndroidId(value); - } - } - - /// - /// FirebaseId - /// - private class MidWarePropertyGoogleAdId : AbstractMidWareProperty - { - public MidWarePropertyGoogleAdId(string value) - : base(PropertyGoogleAdId, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetGoogleAdId(value); - } - } - - /// - /// IDFV - /// - private class MidWarePropertyIDFV : AbstractMidWareProperty - { - public MidWarePropertyIDFV(string value) - : base(PropertyIDFV, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetIDFV(value); - } - } - - /// - /// IDFV - /// - private class MidWarePropertyIDFA : AbstractMidWareProperty - { - public MidWarePropertyIDFA(string value) - : base(PropertyIDFA, value, ReportPropertyTarget.Both) - { - } - - protected override void BeforeReportProperty() - { - _guruEventDriver.SetIDFA(value); - } - } - - /// - /// 必要属性上报配置 - /// - internal enum ReportPropertyTarget - { - Firebase = 1, - Guru = 2, - Both = 3, - } - - - /// - /// 全部属性集合 - /// - internal class MidWarePropertiesManager - { - - private static MidWarePropertiesManager _instance; - - public static MidWarePropertiesManager Instance - { - get - { - if (_instance == null) _instance = new MidWarePropertiesManager(); - return _instance; - } - } - - - private readonly Dictionary _propertyMap = new Dictionary(10); - - + /// + /// 全部属性集合 + /// + internal class MidWarePropertiesManager + { + /* ======= 必打属性 ======== user_id (F,G) @@ -540,151 +181,123 @@ namespace Guru idfa ======= 补充属性 ======== */ - - //-------------------- 设置所有的属性 ----------------------- - - public void ReportUid(string uid) - { - var prop = new MidWarePropertyUid(uid); - _propertyMap[prop.key] = prop; - prop.Report(); - } - public void ReportBLevel(string bLevel) - { - var prop = new MidWarePropertyBLevel(bLevel); - _propertyMap[prop.key] = prop; - prop.Report(); - } - public void ReportBPlay(string bPlay) - { - var prop = new MidWarePropertyBPlay(bPlay); - _propertyMap[prop.key] = prop; - prop.Report(); - } + + //-------------------- 设置所有的属性 ----------------------- - public void ReportAnalyticsExperimentGroup(string groupName) - { - var prop = new MidWarePropertyAnalyticsExperimentGroup(groupName); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportSignUpMethod(string methodName) - { - var prop = new MidWarePropertySignUpMethod(methodName); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportDeviceId(string deviceId) - { - var prop = new MidWarePropertyDeviceId(deviceId); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportFirstOpenTime(string firstOpenTime) - { - var prop = new MidWarePropertyFirstOpenTime(firstOpenTime); - _propertyMap[prop.key] = prop; - prop.Report(); - } - public void ReportIsIapUser(bool isIapUser) - { - var prop = new MidWarePropertyIsIapUser(isIapUser); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportNetworkStatus(string networkStatus) - { - var prop = new MidWarePropertyNetwork(networkStatus); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportAdjustId(string adjustId) - { - var prop = new MidWarePropertyAdjustId(adjustId); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportAttStatus(string attStatus) - { - var prop = new MidWarePropertyAttStatus(attStatus); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportNotiPerm(string notiPerm) - { - var prop = new MidWarePropertyNotiPerm(notiPerm); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportAndroidId(string androidId) - { - var prop = new MidWarePropertyAndroidId(androidId); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportGoogleAdId(string googleAdId) - { - var prop = new MidWarePropertyGoogleAdId(googleAdId); - _propertyMap[prop.key] = prop; - prop.Report(); - } - - public void ReportIDFV(string idfv) - { - var prop = new MidWarePropertyIDFV(idfv); - _propertyMap[prop.key] = prop; - prop.Report(); - } - public void ReportIDFA(string idfa) - { - var prop = new MidWarePropertyIDFA(idfa); - _propertyMap[prop.key] = prop; - prop.Report(); - } + private readonly GuruEventDriver _guruEventDriver; + private readonly FirebaseEventDriver _firebaseEventDriver; + + public MidWarePropertiesManager(GuruEventDriver guruDriver, FirebaseEventDriver firebaseDriver) + { + _guruEventDriver = guruDriver; + _firebaseEventDriver = firebaseDriver; + } - /// - /// 应用所有中台打点的用户属性 - /// - public void ApplyAllProperties() - { - // 应用所有用户属性 - Debug.Log($"{TAG} --- UpdateAllValues ---"); - foreach (var prop in _propertyMap.Values) - { - prop.Report(); - } + + public void ReportUid(string uid) + { + _guruEventDriver.SetUid(uid); + _guruEventDriver.AddProperty(Analytics.PropertyUserID, uid); - ReportEventSuccessRate(); - } - - /// - /// 上报事件成功率 - /// - private static void ReportEventSuccessRate() - { - var interval = (DateTime.Now - _lastReportRateDate).TotalSeconds; - if (interval > _reportSuccessInterval) - { - GuruAnalytics.Instance.ReportEventSuccessRate(); - _lastReportRateDate = DateTime.Now; - } - } + _firebaseEventDriver.SetUid(uid); + _firebaseEventDriver.AddProperty(Analytics.PropertyUserID, uid); + } + public void ReportBLevel(string bLevel) + { + _guruEventDriver.AddProperty(Analytics.PropertyLevel, bLevel); + _firebaseEventDriver.AddProperty(Analytics.PropertyLevel, bLevel); + } + public void ReportBPlay(string bPlay) + { + _guruEventDriver.AddProperty(Analytics.PropertyPlay, bPlay); + _firebaseEventDriver.AddProperty(Analytics.PropertyPlay, bPlay); } + public void ReportAnalyticsExperimentGroup(string groupName) + { + _guruEventDriver.AddProperty(Analytics.PropertyAnalyticsExperimentalGroup, groupName); + _firebaseEventDriver.AddProperty(Analytics.PropertyAnalyticsExperimentalGroup, groupName); + } + + public void ReportSignUpMethod(string methodName) + { + _guruEventDriver.AddProperty(Analytics.PropertySignUpMethod, methodName); + _firebaseEventDriver.AddProperty(Analytics.PropertySignUpMethod, methodName); + } + + public void ReportDeviceId(string deviceId) + { + _guruEventDriver.SetDeviceId(deviceId); + _guruEventDriver.AddProperty(Analytics.PropertyDeviceID, deviceId); + _firebaseEventDriver.AddProperty(Analytics.PropertyDeviceID, deviceId); + } + + public void ReportFirstOpenTime(string firstOpenTime) + { + _guruEventDriver.AddProperty(Analytics.PropertyFirstOpenTime, firstOpenTime); + _firebaseEventDriver.AddProperty(Analytics.PropertyFirstOpenTime, firstOpenTime); + } - #endregion + public void ReportIsIapUser(string isIapUser) + { + _guruEventDriver.AddProperty(Analytics.PropertyIsIAPUser, isIapUser); + _firebaseEventDriver.AddProperty(Analytics.PropertyIsIAPUser, isIapUser); + } + + public void ReportNetworkStatus(string networkStatus) + { + _guruEventDriver.AddProperty(Analytics.PropertyNetwork, networkStatus); + _firebaseEventDriver.AddProperty(Analytics.PropertyNetwork, networkStatus); + } + + public void ReportAdjustId(string adjustId) + { + _guruEventDriver.SetAdjustId(adjustId); + _firebaseEventDriver.AddProperty(Analytics.PropertyAdjustId, adjustId); + } + + public void ReportAttStatus(string attStatus) + { + _guruEventDriver.AddProperty(Analytics.PropertyAttStatus, attStatus); + _firebaseEventDriver.AddProperty(Analytics.PropertyAttStatus, attStatus); + } + + public void ReportNotiPerm(string notiPerm) + { + _guruEventDriver.AddProperty(Analytics.PropertyNotiPerm, notiPerm); + _firebaseEventDriver.AddProperty(Analytics.PropertyNotiPerm, notiPerm); + } + + public void ReportAndroidId(string androidId) + { + _guruEventDriver.SetAndroidId(androidId); + _guruEventDriver.AddProperty(Analytics.PropertyAndroidId, androidId); + _firebaseEventDriver.AddProperty(Analytics.PropertyAndroidId, androidId); + } + + public void ReportGoogleAdId(string googleAdId) + { + _guruEventDriver.SetGoogleAdId(googleAdId); + _guruEventDriver.AddProperty(Analytics.PropertyGoogleAdId, googleAdId); + _firebaseEventDriver.AddProperty(Analytics.PropertyGoogleAdId, googleAdId); + } + + public void ReportIDFV(string idfv) + { + _guruEventDriver.SetIDFV(idfv); + _guruEventDriver.AddProperty(Analytics.PropertyIDFV, idfv); + _firebaseEventDriver.AddProperty(Analytics.PropertyIDFV, idfv); + } + public void ReportIDFA(string idfa) + { + _guruEventDriver.SetIDFA(idfa); + _guruEventDriver.AddProperty(Analytics.PropertyIDFA, idfa); + _firebaseEventDriver.AddProperty(Analytics.PropertyIDFA, idfa); + } + } - - + + #endregion } \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs index 8322d1a..f833a30 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs @@ -1,5 +1,7 @@ +using System.Linq; + namespace Guru { using System; @@ -8,7 +10,7 @@ namespace Guru using UnityEngine; //游戏通用模版打点定义 - public static partial class Analytics + public partial class Analytics { #region 游戏通用打点 @@ -146,21 +148,21 @@ namespace Guru /// 新用户通过第几关(仅记录前n关,根据项目自行确定,不区分关卡类型)[买量用] /// /// 总计完成的管卡数 (b_play) - /// - public static void LevelEndSuccess( int level, Dictionary extra = null) + /// + public static void LevelEndSuccess( int level, Dictionary data) { if (level > GuruSettings.Instance.AnalyticsSetting.LevelEndSuccessNum) return; string eventName = $"level_end_success_{level}"; - if (extra == null) - { - extra = new Dictionary() - { - ["level"] = level, - }; - } - TrackEvent(eventName, extra, new EventSetting() + + var dict = data.ToDictionary( + entry => entry.Key, + entry => entry.Value); + + dict["level"] = level; + + TrackEvent(eventName, dict, new EventSetting() { EnableFirebaseAnalytics = true, EnableGuruAnalytics = true, diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs index 20185e2..29e4aa4 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs @@ -15,7 +15,7 @@ namespace Guru using Firebase.Crashlytics; //打点模块初始化和基础接口封装 - public static partial class Analytics + public partial class Analytics { public class EventSetting { @@ -53,8 +53,9 @@ namespace Guru private static FBEventDriver _fbEventDriver; private static FirebaseEventDriver _firebaseEventDriver; private static GuruEventDriver _guruEventDriver; + private static MidWarePropertiesManager _propertiesManager; - + #region 初始化 /// @@ -70,8 +71,14 @@ namespace Guru _firebaseEventDriver = new FirebaseEventDriver(); _guruEventDriver = new GuruEventDriver(); + _propertiesManager = new MidWarePropertiesManager(_guruEventDriver, _firebaseEventDriver); + + // ------ 设置初始化参数 ------- SetDeviceId(IPMConfig.IPM_DEVICE_ID); SetFirstOpenTime(IPMConfig.FIRST_OPEN_TIME); + SetBLevel(1); + SetBPlay(0); + SetIsIapUser(false); } /// @@ -89,10 +96,21 @@ namespace Guru // --- 上报用户事件 --- SetDeviceId(IPMConfig.IPM_DEVICE_ID); // SetUserProperty(PropertyFirstOpenTime, FirstOpenTime); - _firebaseEventDriver.TriggerFlush(); } + /// + /// 上报事件成功率 + /// + private static void ReportEventSuccessRate() + { + var interval = (DateTime.Now - _lastReportRateDate).TotalSeconds; + if (interval > _reportSuccessInterval) + { + GuruAnalytics.Instance.ReportEventSuccessRate(); + _lastReportRateDate = DateTime.Now; + } + } public static void OnFBInitComplete() { @@ -180,8 +198,7 @@ namespace Guru // 填充相关的追踪事件 _guruEventDriver.AddProperty(key, value); _firebaseEventDriver.AddProperty(key, value); - // 更新所有必要的用户属性 - ApplyAllMidWareProperties(); + ReportEventSuccessRate(); Debug.Log($"{TAG} --- SetUserProperty -> propertyName:{key}, propertyValue:{value}"); } catch (Exception ex)