update: 优化 NetworkStatusMonitor 的代码
--story=1021173 --user=yufei.hu 【中台】【BI】上报用户离线打点 guru_offline https://www.tapd.cn/33527076/s/1161347 Signed-off-by: huyufei <yufei.hu@castbox.fm>
parent
719be42b59
commit
9cf0dd5801
|
|
@ -19,8 +19,9 @@ namespace Guru
|
||||||
private static bool _hasGotUid; // 已取得UID
|
private static bool _hasGotUid; // 已取得UID
|
||||||
private static DateTime _lastReportRateDate; //上次上报信息的日期
|
private static DateTime _lastReportRateDate; //上次上报信息的日期
|
||||||
private static double _reportSuccessInterval; // 上报频率
|
private static double _reportSuccessInterval; // 上报频率
|
||||||
|
#if UNITY_IOS
|
||||||
// private const string VALUE_NOT_FOR_IOS = "not_support_for_ios";
|
private const string VALUE_NOT_FOR_IOS = "not_support_for_ios";
|
||||||
|
#endif
|
||||||
// private const string VALUE_ONLY_FOR_IOS = "idfa_only_for_ios";
|
// private const string VALUE_ONLY_FOR_IOS = "idfa_only_for_ios";
|
||||||
|
|
||||||
private static bool _isGuruAnalyticInitOnce = false;
|
private static bool _isGuruAnalyticInitOnce = false;
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Guru.Network
|
||||||
|
|
||||||
private const int CHECK_STATUS_INTERVAL_SECOND = 10;
|
private const int CHECK_STATUS_INTERVAL_SECOND = 10;
|
||||||
|
|
||||||
private DateTime LastReportDate
|
private DateTime LastTriggerDate
|
||||||
{
|
{
|
||||||
get => _saveData.LastReportDate;
|
get => _saveData.LastReportDate;
|
||||||
set => _saveData.LastReportDate = value;
|
set => _saveData.LastReportDate = value;
|
||||||
|
|
@ -35,21 +35,22 @@ namespace Guru.Network
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly Action<string> _onNetworkStatusChanged;
|
private readonly Action<string> _onNetworkStatusChanged;
|
||||||
private readonly Action<string> _onReportOffline;
|
private readonly Action<string> _onFirstOfflineToday;
|
||||||
private readonly NetworkMonitorData _saveData;
|
private readonly NetworkMonitorData _saveData;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="onNetworkStatusChanged"></param>
|
/// <param name="onNetworkStatusChanged"></param>
|
||||||
/// <param name="onReportOffline"></param>
|
/// <param name="onFirstOfflineToday"></param>
|
||||||
public NetworkStatusMonitor(Action<string> onNetworkStatusChanged, Action<string> onReportOffline)
|
public NetworkStatusMonitor(Action<string> onNetworkStatusChanged, Action<string> onFirstOfflineToday)
|
||||||
{
|
{
|
||||||
_onNetworkStatusChanged = onNetworkStatusChanged;
|
_onNetworkStatusChanged = onNetworkStatusChanged;
|
||||||
_onReportOffline = onReportOffline;
|
_onFirstOfflineToday = onFirstOfflineToday;
|
||||||
|
|
||||||
_saveData = new NetworkMonitorData(); // 读取数据
|
_saveData = new NetworkMonitorData(); // 读取数据
|
||||||
|
|
||||||
|
//TODO: 此处不应使用协程实现, 协程只用在 UI 上。
|
||||||
CoroutineHelper.Instance.StartCoroutine(OnCheckingNetworkStatus(CHECK_STATUS_INTERVAL_SECOND));
|
CoroutineHelper.Instance.StartCoroutine(OnCheckingNetworkStatus(CHECK_STATUS_INTERVAL_SECOND));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,16 +81,16 @@ namespace Guru.Network
|
||||||
/// 当前是可以打点上报
|
/// 当前是可以打点上报
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private bool CanSendReport() => DateTime.UtcNow.DayOfYear != LastReportDate.DayOfYear && DateTime.UtcNow.Year != LastReportDate.Year;
|
private bool IsSameDay(DateTime date) => DateTime.UtcNow.DayOfYear != date.DayOfYear && DateTime.UtcNow.Year != date.Year;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置打点时间
|
/// 设置打点时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void SetReportTime() => LastReportDate = DateTime.UtcNow;
|
private void SetTriggerFirstOfflineDate() => LastTriggerDate = DateTime.UtcNow;
|
||||||
|
|
||||||
private bool NeedReportOffline()
|
private bool ShouldTriggerFirstOffline()
|
||||||
{
|
{
|
||||||
return IsUserOffline() && CanSendReport();
|
return IsUserOffline() && IsSameDay(LastTriggerDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateNetworkStatus()
|
private void UpdateNetworkStatus()
|
||||||
|
|
@ -103,11 +104,11 @@ namespace Guru.Network
|
||||||
_onNetworkStatusChanged(status);
|
_onNetworkStatusChanged(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeedReportOffline())
|
if (ShouldTriggerFirstOffline())
|
||||||
{
|
{
|
||||||
Debug.Log($"{Tag} --- Report Offline: {LastNetworkStatus}");
|
Debug.Log($"{Tag} --- Report Offline: {LastNetworkStatus}");
|
||||||
_onReportOffline?.Invoke(LastNetworkStatus);
|
_onFirstOfflineToday?.Invoke(LastNetworkStatus);
|
||||||
SetReportTime();
|
SetTriggerFirstOfflineDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
LastNetworkStatus = status;
|
LastNetworkStatus = status;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue