update: NetworkStatusMonitor 代码重构和 Review
--story=1020899 --user=yufei.hu 【BI】guru 埋点增加网络相关用户属性 https://www.tapd.cn/58098289/s/1160727 Signed-off-by: huyufei <yufei.hu@castbox.fm>
							parent
							
								
									ada48d7c0e
								
							
						
					
					
						commit
						742d81eab8
					
				|  | @ -162,7 +162,7 @@ namespace Guru | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		/// <summary> | 		/// <summary> | ||||||
| 		/// Firebase上报用户属性 | 		/// 设置用户属性 | ||||||
| 		/// </summary> | 		/// </summary> | ||||||
| 		public static void SetUserProperty(string key, string value) | 		public static void SetUserProperty(string key, string value) | ||||||
| 		{ | 		{ | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| 
 | 
 | ||||||
| namespace Guru.Network | namespace Guru.Network | ||||||
| { | { | ||||||
|      |     using Guru; | ||||||
|     using System; |     using System; | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Linq; |  | ||||||
|     using UnityEngine; |     using UnityEngine; | ||||||
| 
 | 
 | ||||||
|     public class NetworkStatusMonitor |     public class NetworkStatusMonitor | ||||||
|  | @ -19,98 +17,21 @@ namespace Guru.Network | ||||||
|         private const string NETWORK_STATUS_BLUETOOTH = "bluetooth"; |         private const string NETWORK_STATUS_BLUETOOTH = "bluetooth"; | ||||||
|         private const string NETWORK_STATUS_OTHER = "other"; |         private const string NETWORK_STATUS_OTHER = "other"; | ||||||
|          |          | ||||||
|         private bool _isReady = false; |  | ||||||
| 
 |  | ||||||
|         private INetworkStatusProxy _proxy; |  | ||||||
|         private INetworkStatusProxy Proxy |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 if (_proxy == null) |  | ||||||
|                 { |  | ||||||
| #if UNITY_EDITOR |  | ||||||
|                     _proxy =  new NetworkStatusEditor(); |  | ||||||
| #elif UNITY_ANDROID |  | ||||||
|                     _proxy =  new NetworkStatusAndroid(); |  | ||||||
| #elif UNITY_IOS |  | ||||||
|                     _proxy =  new NetworkStatusIOS(); |  | ||||||
| #endif |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 if (_proxy == null) |  | ||||||
|                 { |  | ||||||
|                     // 如果未实现则报异常 |  | ||||||
|                     throw new NotImplementedException("Can't find NetworkStatusProxy instance!!"); |  | ||||||
|                 } |  | ||||||
|                  |  | ||||||
|                 return _proxy; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// 网络状态列表 |  | ||||||
|         /// </summary> |  | ||||||
|         private List<string> _statusNameList = new List<string>() |  | ||||||
|         { |  | ||||||
|             NETWORK_STATUS_VPN, |  | ||||||
|             NETWORK_STATUS_TETHER, |  | ||||||
|             NETWORK_STATUS_MOBILE, |  | ||||||
|             NETWORK_STATUS_WIFI, |  | ||||||
|             NETWORK_STATUS_ETHERNET, |  | ||||||
|             NETWORK_STATUS_BLUETOOTH, |  | ||||||
|             NETWORK_STATUS_OTHER, |  | ||||||
|             NETWORK_STATUS_NONE, |  | ||||||
|         }; |  | ||||||
|          |  | ||||||
|         public void Init(Action<bool> onInitComplete = null) |  | ||||||
|         { |  | ||||||
|             Proxy.Init(success => |  | ||||||
|             { |  | ||||||
|                 _isReady = success; |  | ||||||
|                 onInitComplete?.Invoke(success); |  | ||||||
|             });           |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// 获取网络状态 |         /// 获取网络状态 | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         /// <returns></returns> |         /// <returns></returns> | ||||||
|         public string GetNetworkStatus() |         public string GetNetworkStatus() | ||||||
|         { |         { | ||||||
|             if (_isReady) |             switch (Application.internetReachability) | ||||||
|             { |             { | ||||||
|                 var status = Proxy.GetNetworkStatus(); |                 case NetworkReachability.ReachableViaLocalAreaNetwork: | ||||||
|                 if (status != null && status.Length > 0) |                     return NETWORK_STATUS_WIFI; | ||||||
|                 { |                 case NetworkReachability.ReachableViaCarrierDataNetwork: | ||||||
|                     string statusName = ""; |                     return NETWORK_STATUS_MOBILE; | ||||||
|                     for (int i = 0; i < _statusNameList.Count; i++) |  | ||||||
|                     { |  | ||||||
|                         // 根据名称优先级, 先获取到的优先上报 |  | ||||||
|                         statusName = _statusNameList[i]; |  | ||||||
|                         if (status.Contains(statusName)) |  | ||||||
|                         { |  | ||||||
|                             Debug.Log($"{Tag} --- GetNetworkStatus: [{string.Join(",", status)}]"); |  | ||||||
|                             return statusName; |  | ||||||
|                         } |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|             Debug.LogWarning($"{Tag} --- Network Monitor is not ready!"); |  | ||||||
|             return NETWORK_STATUS_NONE; |             return NETWORK_STATUS_NONE; | ||||||
|         } |         } | ||||||
|          |  | ||||||
|         // private void OnProxyInitComplete(bool success) |  | ||||||
|         // { |  | ||||||
|         //     if (success) |  | ||||||
|         //     { |  | ||||||
|         //         Debug.Log($"{Tag} --- NetworkStatusMonitor init success"); |  | ||||||
|         //     } |  | ||||||
|         //     else |  | ||||||
|         //     { |  | ||||||
|         //         Debug.LogError($"{Tag} --- NetworkStatusMonitor init failed"); |  | ||||||
|         //     } |  | ||||||
|         // } |  | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue