From 60b503fe3d4885fe3d290bfbe209b1158c51daef Mon Sep 17 00:00:00 2001 From: huyfei Date: Tue, 30 Jan 2024 15:41:53 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=20ABTest=20?= =?UTF-8?q?=E5=86=85=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=A0=A1=E9=AA=8CBUG,=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=89=93=E7=82=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/ABTest/ABTestManager.cs | 42 ++++++++++------- .../GuruCore/Runtime/Analytics/Analytics.cs | 45 +++++++++++++++---- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/Runtime/ABTest/ABTestManager.cs b/Runtime/ABTest/ABTestManager.cs index d402a99..074346a 100644 --- a/Runtime/ABTest/ABTestManager.cs +++ b/Runtime/ABTest/ABTestManager.cs @@ -88,7 +88,8 @@ namespace Guru { if (!string.IsNullOrEmpty(value) && value.Contains("guru_ab_")) { - _params.Add(ABParamData.Parse(value)); // 添加参数 + var p = ABParamData.Parse(value); + if(p != null) _params.Add(p); // 添加参数 } } @@ -128,32 +129,39 @@ namespace Guru public static ABParamData Parse(string value) { Debug.Log($"--- ABParamData.Parse: {value}"); - var p = new ABParamData(); - p.value = value; - - // 发现Guru AB测试标志位 - var dict = JsonMapper.ToObject>(value); - if (null != dict) + try { - foreach (var k in dict.Keys) + // 发现Guru AB测试标志位 + var dict = JsonMapper.ToObject>(value); + if (null != dict) { - if (k.StartsWith("guru_ab")) + foreach (var k in dict.Keys) { - p.id = GetItemKey(k); - p.group = dict[k].ToString(); - // Debug.Log($"[AB] add property {k}: {dict[k]}"); - break; + if (k.StartsWith("guru_ab")) + { + return new ABParamData() + { + id = GetItemKey(k), + group = dict[k].ToString(), + value = value + }; + } } } } - - return p; + catch (Exception e) + { + string msg = $"[AB] --- Parse AB Param Error -> Value: {value}\n{e.Message}"; + Analytics.LogCrashlytics(msg); + Debug.Log(msg); + } + return null; } private static string GetItemKey(string raw) { - var h = raw.Replace("guru_", ""); - var key = h.Substring(0, Mathf.Min(PARAM_NAME_LENGTH, h.Length)); // 最大长度23 + int ln = "guru_".Length; + var key = raw.Substring(ln, Mathf.Min(PARAM_NAME_LENGTH, raw.Length - ln)); // 最大长度23 return key; } diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs index 5562ca4..0f43050 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs @@ -1,11 +1,14 @@ -using System; -using System.Collections.Generic; -using com.adjust.sdk; -using Facebook.Unity; -using Firebase.Analytics; + namespace Guru { + using System; + using System.Collections.Generic; + using com.adjust.sdk; + using Facebook.Unity; + using Firebase.Analytics; + using Firebase.Crashlytics; + //打点模块初始化和基础接口封装 public static partial class Analytics { @@ -47,10 +50,10 @@ namespace Guru public static void InitAnalytics() { - if (_isInited) - return; - + if (_isInited) return; _isInited = true; + Crashlytics.IsCrashlyticsCollectionEnabled = true; + if (_defaultEventSetting == null) { var analyticsSetting = GuruSettings.Instance.AnalyticsSetting; @@ -231,6 +234,32 @@ namespace Guru } } + + /// + /// Crashlytics 上报 + /// + /// + /// + public static void LogCrashlytics(string msg, bool isException = true) + { + if (!_isInited) return; + if (isException) + { + LogCrashlytics(new Exception(msg)); + } + else + { + Crashlytics.Log(msg); + } + } + + + public static void LogCrashlytics(Exception exp) + { + if (!_isInited) return; + Crashlytics.LogException(exp); + Crashlytics.SetUserId(IPMConfig.IPM_UID); + } #endregion