update: 更新打包日志,完善云控参数读取, 重构本地测试逻辑, 规范日志
Signed-off-by: huyufei <yufei.hu@castbox.fm>hotfix/v1.0.12.2
parent
bd39fb09f1
commit
6dd2574763
|
|
@ -8,18 +8,20 @@ Sample Dependencies.xml:
|
|||
<androidPackage spec="androidx.core:core:1.7.0" />
|
||||
<!-- <androidPackage spec="androidx.appcompat:appcompat:1.5.1" />-->
|
||||
<androidPackage spec="androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" />
|
||||
<androidPackage spec="androidx.work:work-runtime:2.7.1" />
|
||||
<androidPackage spec="androidx.work:work-runtime-ktx:2.7.1" />
|
||||
<androidPackage spec="androidx.work:work-rxjava2:2.7.1" />
|
||||
<androidPackage spec="androidx.work:work-runtime:2.9.0" />
|
||||
<androidPackage spec="androidx.work:work-runtime-ktx:2.9.0" />
|
||||
<androidPackage spec="androidx.work:work-rxjava2:2.9.0" />
|
||||
<androidPackage spec="androidx.lifecycle:lifecycle-process:2.4.0" />
|
||||
<androidPackage spec="com.jakewharton.timber:timber:4.7.1" />
|
||||
<androidPackage spec="com.google.code.gson:gson:2.8.5" />
|
||||
<androidPackage spec="androidx.room:room-runtime:2.4.3" />
|
||||
<androidPackage spec="androidx.room:room-rxjava2:2.4.3" />
|
||||
<androidPackage spec="androidx.room:room-runtime:2.6.1" />
|
||||
<androidPackage spec="androidx.room:room-rxjava2:2.6.1" />
|
||||
<androidPackage spec="com.squareup.retrofit2:retrofit:2.7.1" />
|
||||
<androidPackage spec="com.squareup.retrofit2:converter-gson:2.7.1" />
|
||||
<androidPackage spec="com.squareup.retrofit2:adapter-rxjava2:2.7.1" />
|
||||
<androidPackage spec="com.squareup.okhttp3:okhttp:4.9.3" />
|
||||
<androidPackage spec="com.squareup.okhttp3:okhttp:4.12.0" />
|
||||
<androidPackage spec="com.squareup.okhttp3:okhttp-dnsoverhttps:4.12.0" />
|
||||
<androidPackage spec="com.google.net.cronet:cronet-okhttp:0.1.0" />
|
||||
<!-- <androidPackage spec="com.mapzen:on-the-road:0.8.1" />-->
|
||||
<!-- <androidPackage spec="com.squareup.retrofit2:retrofit:2.7.1" />-->
|
||||
</androidPackages>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,16 +1,37 @@
|
|||
|
||||
|
||||
namespace Guru
|
||||
{
|
||||
using Guru;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Random = UnityEngine.Random;
|
||||
using System.Collections.Generic;
|
||||
using Firebase.RemoteConfig;
|
||||
using System.Linq;
|
||||
|
||||
public class GuruAnalyticsExp
|
||||
{
|
||||
|
||||
private const string Tag = "[SDK][ANU][EXP]";
|
||||
|
||||
private static bool IsDebug
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_EDITOR || DEBUG
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static string SavedGuruAnalyticsExpGroupId
|
||||
{
|
||||
get => PlayerPrefs.GetString(nameof(SavedGuruAnalyticsExpGroupId), "");
|
||||
set
|
||||
{
|
||||
PlayerPrefs.SetString(nameof(SavedGuruAnalyticsExpGroupId), value);
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 原始数据
|
||||
private const string JSON_GROUP_B =
|
||||
|
|
@ -25,7 +46,7 @@ namespace Guru
|
|||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public static GuruAnalyticsExpData Parse(string json)
|
||||
private static GuruAnalyticsExpData Parse(string json)
|
||||
{
|
||||
if (string.IsNullOrEmpty(json)) return null;
|
||||
return JsonParser.ToObject<GuruAnalyticsExpData>(json);
|
||||
|
|
@ -50,24 +71,132 @@ namespace Guru
|
|||
}]
|
||||
}";
|
||||
|
||||
public static GuruAnalyticsExpData DefaultData => Parse(DEFAULT_GURU_ANALYTICS_EXP);
|
||||
/// <summary>
|
||||
/// 获取默认数据
|
||||
/// </summary>
|
||||
private static GuruAnalyticsExpData DefaultData => Parse(DEFAULT_GURU_ANALYTICS_EXP);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 在当前版本中,随机获取线上配置的值
|
||||
/// 若无法获取线上配置,则默认是 B 分组
|
||||
/// </summary>
|
||||
/// <param name="groupId"></param>
|
||||
/// <param name="baseUrl"></param>
|
||||
/// <param name="uploadIpAddress"></param>
|
||||
/// <param name="isEnable"></param>
|
||||
public static void GetGuruAnalyticsExpParams(out string groupId, out string baseUrl, out string[] uploadIpAddress, out bool isEnable)
|
||||
{
|
||||
groupId = "";
|
||||
baseUrl = "";
|
||||
uploadIpAddress = null;
|
||||
isEnable = true;
|
||||
string localGroup = "";
|
||||
string remoteGroup = "";
|
||||
GuruAnalyticsExpData expData = null;
|
||||
bool usingLocalData = false;
|
||||
|
||||
var gid = SavedGuruAnalyticsExpGroupId;
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #0 Analytics EXP saved groupId :{gid}");
|
||||
|
||||
// 拉取云控数据
|
||||
var json = "";
|
||||
if(FirebaseUtil.IsFirebaseInitialized && FirebaseRemoteConfig.DefaultInstance.Keys.Contains(KEY_GURU_ANALYTICS_EXP))
|
||||
json = FirebaseRemoteConfig.DefaultInstance.GetValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP).StringValue;
|
||||
|
||||
if (string.IsNullOrEmpty(json))
|
||||
{
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #1 Analytics EXP json is Null -> using DefaultData");
|
||||
expData = DefaultData;
|
||||
usingLocalData = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #2 Analytics EXP Try to get remote json -> {json}");
|
||||
expData = Parse(json);
|
||||
usingLocalData = false;
|
||||
}
|
||||
|
||||
GuruAnalyticsExpConfig config = null;
|
||||
if (string.IsNullOrEmpty(gid))
|
||||
{
|
||||
config = expData.GetRandomConfig();
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #3 no group Id, get random one: id: {config?.groupId ?? "NULL"}");
|
||||
}
|
||||
else
|
||||
{
|
||||
config = expData.GetConfig(gid);
|
||||
if (config == null)
|
||||
{
|
||||
config = expData.GetRandomConfig();
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #4 Get old Config failed: {gid}, change to random: id: {config?.groupId ?? "NULL"}");
|
||||
}
|
||||
}
|
||||
|
||||
if (config == null) {
|
||||
config = DefaultData.exps[0]; // 默认是 B 组
|
||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #6 Get all config is Null -> using Default config B");
|
||||
}
|
||||
|
||||
|
||||
baseUrl = config.baseUrl;
|
||||
groupId = config.groupId;
|
||||
uploadIpAddress = config.uploadIpAddress;
|
||||
SavedGuruAnalyticsExpGroupId = groupId;
|
||||
Debug.Log($"{Tag} --- Analytics EXP params:: groupId:{groupId} baseUrl:{baseUrl} uploadIpAddress:[{string.Join(",", uploadIpAddress)}]");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实验数据主题
|
||||
/// </summary>
|
||||
public class GuruAnalyticsExpData
|
||||
internal class GuruAnalyticsExpData
|
||||
{
|
||||
public bool enable = true; // 默认是打开的状态
|
||||
public GuruAnalyticsExpConfig[] exps; // 实验列表
|
||||
public string ToJson() => JsonParser.ToJson(this); // 转换成 JSON 字符串
|
||||
|
||||
/// <summary>
|
||||
/// 获取随机分组
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public GuruAnalyticsExpConfig GetRandomConfig()
|
||||
{
|
||||
if (exps == null || exps.Length == 0) return null;
|
||||
return exps[Random.Range(0, exps.Length)];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据分组名称获取分组
|
||||
/// </summary>
|
||||
/// <param name="groupId"></param>
|
||||
/// <returns></returns>
|
||||
public GuruAnalyticsExpConfig GetConfig(string groupId)
|
||||
{
|
||||
foreach (var g in exps)
|
||||
{
|
||||
if (g.groupId == groupId) return g;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 分组是否存在
|
||||
/// </summary>
|
||||
/// <param name="groupId"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsGroupExists(string groupId)
|
||||
{
|
||||
foreach (var g in exps)
|
||||
{
|
||||
if (g.groupId == groupId) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -77,7 +206,7 @@ namespace Guru
|
|||
{
|
||||
public string groupId;
|
||||
public string baseUrl;
|
||||
public List<string> uploadIpAddress;
|
||||
public string[] uploadIpAddress;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -105,7 +105,7 @@ namespace Guru
|
|||
/// <param name="isEnable"></param>
|
||||
/// <param name="enableErrorLog"></param>
|
||||
/// <param name="isDebug"></param>
|
||||
public static void InitWithConfig(string appId, string deviceInfo, string baseUrl, List<string> uploadIpAddress, bool isEnable = true, bool enableErrorLog = true, bool isDebug = false)
|
||||
public static void InitWithConfig(string appId, string deviceInfo, string baseUrl, string[] uploadIpAddress, bool isEnable = true, bool enableErrorLog = true, bool isDebug = false)
|
||||
{
|
||||
_enableErrorLog = enableErrorLog;
|
||||
#if UNITY_ANDROID
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ namespace Guru
|
|||
bool useWorker = true;
|
||||
bool useCronet = false;
|
||||
string baseUrl = "";
|
||||
List<string> uploadIpAddress = null;
|
||||
string[] uploadIpAddress = null;
|
||||
CallSDKInit(appId, deviceInfo, bundleId, baseUrl, uploadIpAddress , useWorker, useCronet, isDebug); // 调用接口
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ namespace Guru
|
|||
/// <param name="baseUrl"></param>
|
||||
/// <param name="uploadIpAddress"></param>
|
||||
/// <param name="isDebug"></param>
|
||||
public void InitWithConfig(string appId, string deviceInfo, string baseUrl, List<string> uploadIpAddress, bool isDebug = false)
|
||||
public void InitWithConfig(string appId, string deviceInfo, string baseUrl, string[]uploadIpAddress, bool isDebug = false)
|
||||
{
|
||||
_isDebug = isDebug;
|
||||
string bundleId = Application.identifier;
|
||||
|
|
@ -125,12 +125,12 @@ namespace Guru
|
|||
string deviceInfo,
|
||||
string bundleId,
|
||||
string baseUrl = "",
|
||||
List<string> uploadIpAddress = null,
|
||||
string[] uploadIpAddress = null,
|
||||
bool useWorker = true,
|
||||
bool useCronet = false,
|
||||
bool isDebug = false)
|
||||
{
|
||||
CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, useCronet, baseUrl, uploadIpAddress); // 调用接口
|
||||
CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, useCronet, baseUrl, string.Join(",", uploadIpAddress)); // 调用接口
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,11 +39,13 @@ namespace Guru
|
|||
}
|
||||
|
||||
|
||||
public static void InitGuruAnalyticService(string baseUrl, List<string> uploadIpAddress, bool isEnable = true, bool isDebug = false,
|
||||
public static void InitGuruAnalyticService(string baseUrl, string[] uploadIpAddress, bool isEnable = true, bool isDebug = false,
|
||||
bool enableErrorLog = false, string firebaseId = "")
|
||||
{
|
||||
if (_hasInited) return;
|
||||
|
||||
Debug.Log($"{TAG} --- InstallGuruAnalytics baseUrl: {baseUrl} enableErrorLog: {enableErrorLog} firebaseId:{firebaseId}");
|
||||
|
||||
try
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
|
|
@ -89,7 +91,7 @@ namespace Guru
|
|||
{
|
||||
Debug.Log($"---[ANA] UID: {IPMConfig.IPM_UID}");
|
||||
GuruAnalytics.SetUid(IPMConfig.IPM_UID);
|
||||
FirebaseAnalytics.SetUserProperty(PropertyUserID, IPMConfig.IPM_UID);
|
||||
FirebaseSetUserProperty(PropertyUserID, IPMConfig.IPM_UID);
|
||||
_hasGotUid = true;
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +107,7 @@ namespace Guru
|
|||
if (!string.IsNullOrEmpty(IPMConfig.IPM_DEVICE_ID))
|
||||
{
|
||||
GuruAnalytics.SetDeviceId(IPMConfig.IPM_DEVICE_ID);
|
||||
FirebaseAnalytics.SetUserProperty(PropertyDeviceID, IPMConfig.IPM_DEVICE_ID);
|
||||
FirebaseSetUserProperty(PropertyDeviceID, IPMConfig.IPM_DEVICE_ID);
|
||||
_hasGotDeviceId = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -194,6 +196,8 @@ namespace Guru
|
|||
/// </summary>
|
||||
private static void FetchFirebaseId()
|
||||
{
|
||||
if (!IsFirebaseReady) return;
|
||||
|
||||
FirebaseAnalytics.GetAnalyticsInstanceIdAsync()
|
||||
.ContinueWithOnMainThread(task =>
|
||||
{
|
||||
|
|
@ -259,6 +263,8 @@ namespace Guru
|
|||
/// </summary>
|
||||
private static void UpdateAllValues()
|
||||
{
|
||||
|
||||
Debug.Log($"{TAG} --- UpdateAllValues");
|
||||
SetUid();
|
||||
SetDeviceId();
|
||||
SetAdjustId();
|
||||
|
|
@ -306,9 +312,16 @@ namespace Guru
|
|||
GuruAnalytics.SetUserProperty(key, value);
|
||||
UpdateAllValues(); // 同步所有的ID
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Crashlytics.LogException(e);
|
||||
if (IsFirebaseReady)
|
||||
{
|
||||
Crashlytics.LogException(ex);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -328,7 +341,14 @@ namespace Guru
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Crashlytics.LogException(e);
|
||||
if (IsFirebaseReady)
|
||||
{
|
||||
Crashlytics.LogException(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -352,7 +372,14 @@ namespace Guru
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Crashlytics.LogException(e);
|
||||
if (IsFirebaseReady)
|
||||
{
|
||||
Crashlytics.LogException(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Guru
|
||||
{
|
||||
|
|
@ -28,12 +29,14 @@ namespace Guru
|
|||
|
||||
public static bool IsDebugMode => PlatformUtil.IsDebug();
|
||||
|
||||
public static bool IsFirebaseReady => FirebaseUtil.IsFirebaseInitialized;
|
||||
|
||||
private static bool IsEnable
|
||||
{
|
||||
get
|
||||
{
|
||||
//Firebase服务没有初始化完成不上报打点
|
||||
if (!FirebaseUtil.IsFirebaseInitialized)
|
||||
if (!IsFirebaseReady)
|
||||
return false;
|
||||
|
||||
//Analytics没有初始化不上报打点
|
||||
|
|
@ -50,7 +53,7 @@ namespace Guru
|
|||
|
||||
#region 初始化
|
||||
|
||||
public static void InitAnalytics(string baseUrl = "", List<string> uploadIpAddress = null, bool isEnable = false, bool enableErrorLog = false, string firebaseId = "")
|
||||
public static void InitAnalytics(string baseUrl = "", string[] uploadIpAddress = null, bool isEnable = false, bool enableErrorLog = false, string firebaseId = "")
|
||||
{
|
||||
if (_isInited) return;
|
||||
_isInited = true;
|
||||
|
|
@ -121,8 +124,7 @@ namespace Guru
|
|||
{
|
||||
Log.I(TAG,$"SetUserIDProperty -> userID:{userID}");
|
||||
if (!IsEnable) return;
|
||||
|
||||
FirebaseAnalytics.SetUserId(userID);
|
||||
if (IsFirebaseReady) FirebaseAnalytics.SetUserId(userID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -132,13 +134,30 @@ namespace Guru
|
|||
{
|
||||
Log.I(TAG,$"SetUserProperty -> propertyName:{propertyName}, propertyValue:{propertyValue}");
|
||||
|
||||
if (!IsEnable)
|
||||
return;
|
||||
|
||||
FirebaseAnalytics.SetUserProperty(propertyName, propertyValue);
|
||||
if (!IsEnable) return;
|
||||
FirebaseSetUserProperty(propertyName, propertyValue);
|
||||
CustomSetUserProperty(propertyName, propertyValue);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Firebase 上报用户属性
|
||||
/// </summary>
|
||||
/// <param name="propertyName"></param>
|
||||
/// <param name="propertyValue"></param>
|
||||
private static void FirebaseSetUserProperty(string propertyName, string propertyValue)
|
||||
{
|
||||
if (IsFirebaseReady)
|
||||
{
|
||||
FirebaseAnalytics.SetUserProperty(propertyName, propertyValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"{TAG} --- Firebase not ready, call Firebase Init first!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 打点上报
|
||||
|
|
@ -375,7 +394,7 @@ namespace Guru
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Crashlytics.LogException(ex);
|
||||
if(IsFirebaseReady) Crashlytics.LogException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ namespace Guru
|
|||
{
|
||||
public static partial class FirebaseUtil
|
||||
{
|
||||
|
||||
|
||||
public static void InitCrashlytics()
|
||||
{
|
||||
if(!string.IsNullOrEmpty(IPMConfig.IPM_UID))
|
||||
|
|
@ -17,6 +19,7 @@ namespace Guru
|
|||
/// </summary>
|
||||
public static void SetUserID(string userID)
|
||||
{
|
||||
if (!IsFirebaseInitialized) return;
|
||||
Crashlytics.SetUserId(userID);
|
||||
}
|
||||
|
||||
|
|
@ -26,6 +29,7 @@ namespace Guru
|
|||
/// </summary>
|
||||
public static void SetCustomData(string key, string value)
|
||||
{
|
||||
if (!IsFirebaseInitialized) return;
|
||||
Crashlytics.SetCustomKey(key, value);
|
||||
}
|
||||
|
||||
|
|
@ -34,6 +38,7 @@ namespace Guru
|
|||
/// </summary>
|
||||
public static void LogMessage(string message)
|
||||
{
|
||||
if (!IsFirebaseInitialized) return;
|
||||
Crashlytics.Log(message);
|
||||
}
|
||||
|
||||
|
|
@ -42,6 +47,7 @@ namespace Guru
|
|||
/// </summary>
|
||||
public static void LogException(Exception exception)
|
||||
{
|
||||
if (!IsFirebaseInitialized) return;
|
||||
Crashlytics.LogException(exception);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Guru
|
|||
private static readonly string LOG_TAG = "Firebase";
|
||||
private static bool _isDebug = false;
|
||||
private static bool _isReady = false;
|
||||
public static bool IsReady => _isReady;
|
||||
public static bool IsReady => _isReady && IsFirebaseInitialized;
|
||||
|
||||
public static DependencyStatus DependencyStatus = DependencyStatus.UnavailableOther;
|
||||
public static bool IsFirebaseInitialized => DependencyStatus == DependencyStatus.Available;
|
||||
|
|
@ -106,6 +106,9 @@ namespace Guru
|
|||
|
||||
private static void InitAssetByFirebaseIdAsync()
|
||||
{
|
||||
|
||||
Debug.Log($"[SDK] --- InitAssetByFirebaseIdAsync");
|
||||
|
||||
// 异步获取 FirebaseID
|
||||
FirebaseAnalytics.GetAnalyticsInstanceIdAsync()
|
||||
.ContinueWithOnMainThread(task =>
|
||||
|
|
@ -115,12 +118,12 @@ namespace Guru
|
|||
{
|
||||
// 保存本地ID备份
|
||||
IPMConfig.FIREBASE_ID = fid; // 保存FirebaseID
|
||||
Debug.Log($"[SDk] --- Get FirebaseID: {fid}");
|
||||
Debug.Log($"[SDK] --- Get FirebaseID: {fid}");
|
||||
GuruAnalytics.SetFirebaseId(fid);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"[SDk] --- Fetch FirebaseID failed on start!");
|
||||
Debug.LogError($"[SDK] --- Fetch FirebaseID failed on start!");
|
||||
}
|
||||
|
||||
//--- 结束后启动相关的服务 ---
|
||||
|
|
@ -157,7 +160,7 @@ namespace Guru
|
|||
var enableErrorLog = true; // 开启日志上报
|
||||
|
||||
// 随机抽取本地分组获取数据
|
||||
GetGuruAnalyticsExpConfig(out string groupId, out string baseUrl, out List<string> uploadIpAddress, out bool isEnable);
|
||||
GuruAnalyticsExp.GetGuruAnalyticsExpParams(out string groupId, out string baseUrl, out string[] uploadIpAddress, out bool isEnable);
|
||||
|
||||
// 自打点启动前,先上报一下分数数据
|
||||
GuruAnalytics.SetUserProperty(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, groupId); // 设置实验分组
|
||||
|
|
@ -178,45 +181,14 @@ namespace Guru
|
|||
// 添加默认的云控参数
|
||||
private static void InitGuruAnalyticsExpDefaultRemoteValue()
|
||||
{
|
||||
AppendDefaultValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, GuruAnalyticsExp.DEFAULT_GURU_ANALYTICS_EXP);
|
||||
// AppendDefaultValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, GuruAnalyticsExp.DEFAULT_GURU_ANALYTICS_EXP);
|
||||
FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(new Dictionary<string, object>()
|
||||
{
|
||||
{ GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP, GuruAnalyticsExp.DEFAULT_GURU_ANALYTICS_EXP }
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在当前版本中,随机获取线上配置的值
|
||||
/// 若无法获取线上配置,则默认是 B 分组
|
||||
/// </summary>
|
||||
/// <param name="groupId"></param>
|
||||
/// <param name="baseUrl"></param>
|
||||
/// <param name="uploadIpAddress"></param>
|
||||
/// <param name="isEnable"></param>
|
||||
private static void GetGuruAnalyticsExpConfig(out string groupId, out string baseUrl, out List<string> uploadIpAddress, out bool isEnable)
|
||||
{
|
||||
groupId = "";
|
||||
baseUrl = "";
|
||||
uploadIpAddress = null;
|
||||
isEnable = true;
|
||||
|
||||
// 如果云测关闭
|
||||
var json = FirebaseRemoteConfig.DefaultInstance.GetValue(GuruAnalyticsExp.KEY_GURU_ANALYTICS_EXP).StringValue;
|
||||
var expData = GuruAnalyticsExp.Parse(json);
|
||||
var defaultExpData = GuruAnalyticsExp.DefaultData;
|
||||
|
||||
GuruAnalyticsExpConfig config = null;
|
||||
if (expData == null)
|
||||
{
|
||||
config = defaultExpData.exps[0]; // 默认是 B 组
|
||||
}
|
||||
else
|
||||
{
|
||||
config = expData.GetRandomConfig();
|
||||
if (config == null) config = defaultExpData.exps[0]; // 默认是 B 组
|
||||
}
|
||||
|
||||
baseUrl = config.baseUrl;
|
||||
groupId = config.groupId;
|
||||
uploadIpAddress = config.uploadIpAddress;
|
||||
Debug.Log($"[SDK][ANU] --- Analytics EXP Group: {groupId} baseUrl:{baseUrl} uploadIpAddress:[{string.Join(",", uploadIpAddress)}]");
|
||||
}
|
||||
|
||||
#endif
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ namespace Guru
|
|||
|
||||
public static void LogException(Exception ex)
|
||||
{
|
||||
if (!_isReady)
|
||||
if (!_isReady || !FirebaseUtil.IsReady)
|
||||
{
|
||||
Install();
|
||||
_expCache.Enqueue(ex);
|
||||
|
|
@ -119,7 +119,7 @@ namespace Guru
|
|||
public static void Log(string msg)
|
||||
{
|
||||
if (!_isReady) return;
|
||||
Crashlytics.Log(msg);
|
||||
if(FirebaseUtil.IsReady) Crashlytics.Log(msg);
|
||||
// CheckSetUser();
|
||||
}
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ namespace Guru
|
|||
public static void SetCustomKey(string key, string value)
|
||||
{
|
||||
if (!_isReady) return;
|
||||
Crashlytics.SetCustomKey(key, value);
|
||||
if(FirebaseUtil.IsReady) Crashlytics.SetCustomKey(key, value);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue