fix: 修复启动时自打点没有上报用户属性的 BUG

deeplink
胡宇飞 2024-05-24 16:45:33 +08:00
parent 5b1097464d
commit 8d1afddcd5
3 changed files with 76 additions and 1 deletions

View File

@ -252,6 +252,20 @@ namespace Guru
if (Model.IsNoAds) SetBuyNoAds(true); // 设置用户已经购买了去广告
}
private static HashSet<string> _userPropertyExistKeys = new HashSet<string>(50);
private static void RecordUserPropertyKey(string key)
{
if(_userPropertyExistKeys == null)
_userPropertyExistKeys = new HashSet<string>(50);
if(!HasUserPropertyKey(key)) _userPropertyExistKeys.Add(key);
}
private static bool HasUserPropertyKey(string key)
{
return _userPropertyExistKeys?.Contains(key) ?? false;
}
/// <summary>
@ -266,6 +280,7 @@ namespace Guru
UnityEngine.Debug.LogError($"{Tag} :: SetUserProperty {key}:{value} ::Please call <GuruSDK.Start()> first, before you call <SetUserProperty>.");
return;
}
RecordUserPropertyKey(key);
Analytics.SetUserProperty(key, value);
}
@ -331,6 +346,62 @@ namespace Guru
SetUserProperty(Analytics.PropertyIsIAPUser, isIapUser? "true" : "false");
}
public static void SetFirstOpenTime(string timestamp)
{
SetUserProperty(Analytics.PropertyFirstOpenTime, timestamp);
}
/// <summary>
/// 初始化时调用一下所有的属性打点
/// </summary>
private static void InitCallAllUserProperties()
{
if(!HasUserPropertyKey(Consts.PropertyFirstOpenTime))
SetFirstOpenTime(TimeUtil.GetCurrentTimeStamp().ToString());
if(!HasUserPropertyKey(Consts.PropertyIsIAPUser))
SetUserIsIAP(Model?.IsIapUser ?? false);
if (!HasUserPropertyKey(Consts.PropertyLevel))
SetUserBLevel(Model?.SuccessLevelId ?? 0);
if(!HasUserPropertyKey(Consts.PropertyUserID) && !string.IsNullOrEmpty(UID))
SetUserProperty(Consts.PropertyUserID, UID);
if(!HasUserPropertyKey(Consts.PropertyDeviceID) && !string.IsNullOrEmpty(DeviceId))
SetUserProperty(Consts.PropertyDeviceID, DeviceId);
if(!HasUserPropertyKey(Consts.PropertyIAPCoin))
SetUserPaidCoins(0);
if(!HasUserPropertyKey(Consts.PropertyNonIAPCoin))
SetUserFreeCoins(0);
if(!HasUserPropertyKey(Consts.PropertyCoin))
SetUserTotalCoins(0);
if (!HasUserPropertyKey(Consts.PropertyGrade))
SetUserGrade(0);
if(!HasUserPropertyKey(Consts.PropertyExp))
SetUserExp(0);
if(!HasUserPropertyKey(Consts.PropertyHp))
SetUserHp(0);
#if UNITY_IOS
if(!HasUserPropertyKey(Consts.PropertyATTStatus))
SetUserProperty(Consts.PropertyATTStatus, "notDetermined");
#endif
if(!HasUserPropertyKey(Consts.PropertyNotiPerm))
SetUserProperty(Consts.PropertyNotiPerm, "not_determined");
}
#endregion
#region SDK 打点

View File

@ -211,6 +211,7 @@ namespace Guru
public const string PropertyPicture = "picture"; // 玩家在主线的mapid
public const string PropertyNoAds = "no_ads"; // 玩家是否去广告
public const string PropertyATTStatus = "att_status"; // ATT 状态
public const string PropertyNotiPerm = "noti_perm"; // Notification Permission 状态
public const string PropertyGDPR = "gdpr"; // GDPR状态
// 经济相关

View File

@ -114,7 +114,7 @@ namespace Guru
{
_initTime = DateTime.Now.ToUniversalTime();
// ----- First Open Time -----
Analytics.SetUserProperty(Analytics.FirstOpenTime, GetFirstOpenTime());
SetFirstOpenTime(GetFirstOpenTime()); // FirstOpenTime
LogI($"#1 ---- Guru SDK [{Version}] ----\n{config.ToString()}");
Instance.StartWithConfig(config, onComplete);
}
@ -223,6 +223,9 @@ namespace Guru
LogI($"#5 --- sync sdk time ---");
var sp = DateTime.Now.ToUniversalTime() - _initTime;
LogSDKInitTime(sp.TotalSeconds);
// 上报所有初始化用户属性
InitCallAllUserProperties();
}
/// <summary>