diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs index f0aca6c..caf39d9 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs @@ -19,8 +19,9 @@ namespace Guru private static bool _hasGotUid; // 已取得UID private static DateTime _lastReportRateDate; //上次上报信息的日期 private static double _reportSuccessInterval; // 上报频率 - - // private const string VALUE_NOT_FOR_IOS = "not_support_for_ios"; +#if UNITY_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 static bool _isGuruAnalyticInitOnce = false; diff --git a/Runtime/GuruNetworkMonitor/Runtime/NetworkStatusMonitor.cs b/Runtime/GuruNetworkMonitor/Runtime/NetworkStatusMonitor.cs index 3efb332..14564b9 100644 --- a/Runtime/GuruNetworkMonitor/Runtime/NetworkStatusMonitor.cs +++ b/Runtime/GuruNetworkMonitor/Runtime/NetworkStatusMonitor.cs @@ -22,7 +22,7 @@ namespace Guru.Network private const int CHECK_STATUS_INTERVAL_SECOND = 10; - private DateTime LastReportDate + private DateTime LastTriggerDate { get => _saveData.LastReportDate; set => _saveData.LastReportDate = value; @@ -35,21 +35,22 @@ namespace Guru.Network } private readonly Action _onNetworkStatusChanged; - private readonly Action _onReportOffline; + private readonly Action _onFirstOfflineToday; private readonly NetworkMonitorData _saveData; /// /// 构造函数 /// /// - /// - public NetworkStatusMonitor(Action onNetworkStatusChanged, Action onReportOffline) + /// + public NetworkStatusMonitor(Action onNetworkStatusChanged, Action onFirstOfflineToday) { _onNetworkStatusChanged = onNetworkStatusChanged; - _onReportOffline = onReportOffline; + _onFirstOfflineToday = onFirstOfflineToday; _saveData = new NetworkMonitorData(); // 读取数据 + //TODO: 此处不应使用协程实现, 协程只用在 UI 上。 CoroutineHelper.Instance.StartCoroutine(OnCheckingNetworkStatus(CHECK_STATUS_INTERVAL_SECOND)); } @@ -80,16 +81,16 @@ namespace Guru.Network /// 当前是可以打点上报 /// /// - 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; /// /// 设置打点时间 /// - 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() @@ -103,11 +104,11 @@ namespace Guru.Network _onNetworkStatusChanged(status); } - if (NeedReportOffline()) + if (ShouldTriggerFirstOffline()) { Debug.Log($"{Tag} --- Report Offline: {LastNetworkStatus}"); - _onReportOffline?.Invoke(LastNetworkStatus); - SetReportTime(); + _onFirstOfflineToday?.Invoke(LastNetworkStatus); + SetTriggerFirstOfflineDate(); } LastNetworkStatus = status;