From 9cf0dd580173c401cd87badb29b681a1a920e578 Mon Sep 17 00:00:00 2001 From: huyufei Date: Thu, 1 Aug 2024 17:33:35 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E4=BC=98=E5=8C=96=20NetworkStatusMon?= =?UTF-8?q?itor=20=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --story=1021173 --user=yufei.hu 【中台】【BI】上报用户离线打点 guru_offline https://www.tapd.cn/33527076/s/1161347 Signed-off-by: huyufei --- .../Runtime/Analytics/Analytics.Custom.cs | 5 ++-- .../Runtime/NetworkStatusMonitor.cs | 25 ++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) 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;