| using System.Collections;  | 
| using System.Collections.Generic;  | 
| using UnityEngine;  | 
| using System.Net.NetworkInformation;  | 
| using System;  | 
| using System.Net;  | 
| using System.Net.Sockets;  | 
| using System.IO;  | 
| using System.Text.RegularExpressions;  | 
|   | 
| #if UNITY_IOS  | 
| using UnityEngine.iOS;  | 
| #endif  | 
|   | 
|   | 
| public class DeviceUtility  | 
| {  | 
|   | 
|     static string mac = string.Empty;  | 
|     public static string GetMac()  | 
|     {  | 
|         if (string.IsNullOrEmpty(mac))  | 
|         {  | 
|             try  | 
|             {  | 
|                 var netInterfaces = NetworkInterface.GetAllNetworkInterfaces();  | 
|                 if (netInterfaces != null && netInterfaces.Length > 0)  | 
|                 {  | 
|                     mac = netInterfaces[0].GetPhysicalAddress().ToString();  | 
|                 }  | 
|             }  | 
|             catch (Exception ex)  | 
|             {  | 
|                 DebugEx.Log(ex);  | 
|             }  | 
|         }  | 
|   | 
|         return mac;  | 
|     }  | 
|   | 
|     static string ipPattern = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}";  | 
|     static string ip = string.Empty;  | 
|     public static string GetIp()  | 
|     {  | 
|         try  | 
|         {  | 
|             if (string.IsNullOrEmpty(ip))  | 
|             {  | 
|                 string url = "http://pv.sohu.com/cityjson";  | 
|                 WebRequest wRequest = WebRequest.Create(url);  | 
|                 wRequest.Method = "GET";  | 
|                 wRequest.ContentType = "text/html;charset=UTF-8";  | 
|                 WebResponse wResponse = wRequest.GetResponse();  | 
|                 Stream stream = wResponse.GetResponseStream();  | 
|                 StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);  | 
|                 string str = reader.ReadToEnd();  | 
|   | 
|                 reader.Close();  | 
|                 wResponse.Close();  | 
|   | 
|                 var match = Regex.Match(str, ipPattern);  | 
|                 if (match != null)  | 
|                 {  | 
|                     ip = match.Value;  | 
|                 }  | 
|             }  | 
|         }  | 
|         catch (Exception ex)  | 
|         {  | 
|             Debug.Log(ex);  | 
|         }  | 
|   | 
|         return ip;  | 
|     }  | 
|   | 
|     public static string GetDeviceUniquenessIdentify()  | 
|     {  | 
| #if UNITY_IOS  | 
|         return UnityEngine.iOS.Device.advertisingIdentifier;  | 
| #else  | 
|         return SystemInfo.deviceUniqueIdentifier;  | 
| #endif  | 
|     }  | 
|   | 
|     public static string GetDeviceOSLevel()  | 
|     {  | 
| #if UNITY_IOS  | 
|         return UnityEngine.iOS.Device.systemVersion;  | 
| #else  | 
|         return SystemInfo.operatingSystem;  | 
| #endif  | 
|     }  | 
|   | 
|     public static string GetDeviceName()  | 
|     {  | 
| #if UNITY_IOS  | 
|         return UnityEngine.iOS.Device.generation.ToString();  | 
| #else  | 
|         return SystemInfo.deviceName;  | 
| #endif  | 
|     }  | 
|   | 
|     public static string GetDeviceModel()  | 
|     {  | 
| #if UNITY_IOS  | 
|         return UnityEngine.iOS.Device.generation.ToString();  | 
| #else  | 
|         return SystemInfo.deviceModel;  | 
| #endif  | 
|     }  | 
|   | 
|     public static bool IsLowMemory()  | 
|     {  | 
| #if UNITY_IOS  | 
|         if (Application.platform == RuntimePlatform.IPhonePlayer)  | 
|         {  | 
|             switch (Device.generation)  | 
|             {  | 
|                 case DeviceGeneration.iPadMini2Gen:  | 
|                 case DeviceGeneration.iPhone5S:  | 
|                 case DeviceGeneration.iPhone6:  | 
|                 case DeviceGeneration.iPhone6Plus:  | 
|                     return true;  | 
|                 default:  | 
|                     return false;  | 
|             }  | 
|         }  | 
|         else  | 
|         {  | 
|             return false;  | 
|         }  | 
| #endif  | 
|         return false;  | 
|     }  | 
|   | 
|     public static int cpu = 2;  | 
|     public static int memory = 2 * 1024;  | 
|   | 
|     public static void GetCpuAndMemory(out int _cpu, out int _memory)//内存单位是MB  | 
|     {  | 
|         try  | 
|         {  | 
|             _cpu = Environment.ProcessorCount;  | 
|             switch (Application.platform)  | 
|             {  | 
|                 case RuntimePlatform.Android:  | 
|                     _memory = ynmbxxjUtil.Instance.Device.totalMemory;  | 
|                     break;  | 
|                 case RuntimePlatform.IPhonePlayer:  | 
|                     _memory = IsLowMemory() ? 1 : 2 * 1024;  | 
|                     break;  | 
|                 default:  | 
|                     _memory = 4 * 1024;  | 
|                     break;  | 
|             }  | 
|   | 
|             cpu = _cpu;  | 
|             memory = _memory;  | 
|         }  | 
|         catch (Exception ex)  | 
|         {  | 
|             Debug.Log(ex);  | 
|             _cpu = 2;  | 
|             _memory = 2 * 1024;  | 
|         }  | 
|   | 
|     }  | 
|   | 
| }  |