update: 更新 ABTest 内的类型校验BUG, 完善打点接口

feature/Inventory
胡宇飞 2024-01-30 15:41:53 +08:00
parent c0936f094e
commit 60b503fe3d
2 changed files with 62 additions and 25 deletions

View File

@ -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<Dictionary<string, JsonData>>(value);
if (null != dict)
try
{
foreach (var k in dict.Keys)
// 发现Guru AB测试标志位
var dict = JsonMapper.ToObject<Dictionary<string, JsonData>>(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;
}

View File

@ -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
}
}
/// <summary>
/// Crashlytics 上报
/// </summary>
/// <param name="msg"></param>
/// <param name="isException"></param>
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