From dfa6733793434bdcfd394f978ae72f1628b2260f Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期三, 22 四月 2020 16:50:03 +0800 Subject: [PATCH] 合并代码 --- ZigbeeApp/Shared/Common/CommonPage.cs | 458 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 458 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Common/CommonPage.cs b/ZigbeeApp/Shared/Common/CommonPage.cs new file mode 100755 index 0000000..684ca0d --- /dev/null +++ b/ZigbeeApp/Shared/Common/CommonPage.cs @@ -0,0 +1,458 @@ +锘縰sing System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using Shared.Phone.UserCenter.Abount; +namespace Shared.Common +{ + public class CommonPage : UIDrawerLayout + { + static CommonPage commonPage; + public static CommonPage Instance + { + get + { + if (commonPage == null) + { + commonPage = new CommonPage { }; + } + return commonPage; + } + } + + /// <summary> + /// 鏄剧ず鍔犺浇鐣岄潰 + /// </summary> + public static Loading Loading = new Loading(); + public void Show() + { + //if (Application.IsPad) + //{ + // Application.DesignWidth = 2048; + // Application.DesignHeight = 1536; + // Pad.MainPage.Instance .Show(); + // } + //else + //{ + Application.DesignWidth = 1080; + Application.DesignHeight = 1920; + Application.MainPage.AddChidren(this); + AddChidren(Phone.UserView.HomePage.Instance); + Application.MainPage.AddChidren(Loading); + //} + Phone.UserView.HomePage.Instance.InitPage(); + } + + public static string SoftTitle = "ZigBee"; + /// <summary> + /// 鐭俊妯℃澘缂栧彿 + /// </summary> + public static int SoftSmsType = 0; + public static string LogoString = @"Logo/Logo.png"; + public static string RegisterLogoString = @"Logo/Register_logo.png"; + //public static string RequestHttpsHost = "https://global.hdlcontrol.com/HangZhouHdlCloudApi"; + public static string RequestHttpsHost = "https://global.hdlcontrol.com/ProposedProductionApi"; + /// <summary> + /// 鐗堟湰鍙� + /// </summary> + public static string CodeIDString = "1.0.20041601"; + /// <summary> + /// 娉ㄥ唽鏉ユ簮(0:HDL On 1:Zigbee) + /// </summary> + public static int RegisterSoruceFromZIGBEE = 0; + public static string Source = "ZIGBEE"; + /// <summary> + /// Company 鐢ㄦ埛鍏徃鐢ㄤ簬鍏徃App瀹氬埗鐗� 榛樿0 + /// </summary> + public static int Company = 0; + /// <summary> + /// 娴峰 娉ㄥ唽鏃禔PI璋冪敤鍜屽浗鍐呭尯鍒� + ///</summary> + public static int CompanyForINTERNETION = 4; + /// <summary> + /// 璇锋眰鐗堟湰鍙� + /// </summary> + public static string RequestVersion = "2.0"; + /// <summary> + /// 宸﹁竟璺濈灞忓箷鐨勫搴�--58 + /// </summary> + public static int XLeft = 58; + /// <summary> + /// button楂樺害--110 + /// </summary> + public static int ButtonHeight = 110; + /// <summary> + /// 浣跨敤鐨勮瑷� + /// </summary> + public static string ZigBeeLanguage + { + get + { + return Language.CurrentLanguage; + } + } + /// <summary> + /// 澶ф帶浠跺渾瑙� --- 10銆備笉鏄笉鍗婂渾閭g銆� + /// </summary> + public static uint BigFormRadius = 10; + /// <summary> + /// 榛樿鎵嬫満鍖哄彿涓�86涓浗澶ч檰 + /// </summary> + public static string PhoneZoneStr = "86"; + /// <summary> + /// 鎵嬫満鍖哄悕绉� + /// </summary> + public static string ZoneNameStr = "涓浗澶ч檰"; + /// <summary> + /// 璺濈椤剁楂樺害--80 鐘舵�佹爮楂樺害 + /// </summary> + public static int NavigationTitle_Y = 80; + /// <summary> + /// 琛岄珮--180 + /// </summary> + public static int RowHeight = 180; + /// <summary> + /// APP瀹藉害 -- 1080 + /// </summary> + public static int AppRealWidth = 1080; + /// <summary> + /// APP楂樺害 -- 1920 + /// </summary> + public static int AppRealHeight = 1920; + /// <summary> + /// 杩斿洖閿窛绂诲乏杈圭殑璺濈 30 + /// </summary> + public static int Navigation_X = 30; + /// <summary> + /// 瀵艰埅鏍忛珮搴�-220 + /// </summary> + public static int Navigation_Height = 220; + /// <summary> + /// 搴曡竟鏍忛珮搴� + /// </summary> + public const int TabbarHeight = 141; + /// <summary> + /// 绾挎潯鐨勯珮搴�--瀹為檯鍍忕礌3 + /// </summary> + public static int LineHeight = 3; + /// <summary> + /// 鏁翠釜鍦烘櫙寤舵椂鏃堕棿--60绉� + /// </summary> + public static int SceneDelayTime = 60; + + /// <summary> + /// 闂撮殧澶氶暱鏃堕棿璇诲彇璁惧鐘舵�� 鍗曚綅 绉� --榛樿30 + /// </summary> + public static int ReadDeviceStatuSpan = 30; + /// <summary> + /// 璇诲彇澶氬皯椤�--999 + /// </summary> + public static int PageSize = 999; + + /// <summary> + /// 鐢ㄤ簬涓浗澶ч檰楠岃瘉鎵嬫満鍙锋鍒欒〃杈惧紡 + /// </summary> + public static string PhoneRegexStr = "^[1][0-9]{10}$"; + /// <summary> + /// 鐢ㄤ簬楠岃瘉闈炰腑鍥藉ぇ闄嗘墜鏈哄彿姝e垯琛ㄨ揪寮� + /// </summary> + public static string PhoneForForeignRegexStr = "^[0-9]*$"; + /// <summary> + /// 鐢ㄤ簬楠岃瘉閭姝e垯琛ㄨ揪寮� + /// </summary> + public static string EmailRegexStr = "^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$"; + + + //public static Encoding EncodingUTF8 = Encoding.UTF8; + //public static Encoding EncodingGB2312 = Encoding.GetEncoding("gb2312"); + public static bool IsRemote = false; + public static bool FindGateway = false; + /// <summary> + /// 褰撳墠缃戠粶杩炴帴鐨勬ā寮� 0:娌℃湁缃戠粶 1锛氳繙绋嬭繛鎺ワ紝涔熷彨3G,4G 2锛歐IFI + /// </summary> + public static int nowNetworkMode = 0; + /// <summary> + /// 鍗犱綅瀛椾綋澶у皬 + /// 11 + /// </summary> + public static int PlaceHolderTextSize = 11; + /// <summary> + /// 瀹夊崜鐨勭郴缁熻繑鍥炴寜閿兘鍚︽寜涓�(姣斿鍦ㄥ浠借繕鍘熸椂,涓嶈兘鎸変笅杩斿洖閿�) + /// </summary> + public static bool BackKeyCanClick = true; + + /// <summary> + /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁 + /// </summary> + /// <param name="requestUrl">璇锋眰Url</param> + /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param> + /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns> + public async System.Threading.Tasks.Task<Shared.Common.ResponseEntity.ResponsePack> RequestHttpsZigbeeAsync(string requestUrl, byte[] byteData) + { + string result = await this.RequestHttpsZigbeeResultAsync(requestUrl, byteData); + if (result != null) + { + try + { + var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResponsePack>(result); + return data; + } + catch (Exception ex) + { + System.Console.WriteLine(ex.Message); + } + } + return null; + } + + /// <summary> + /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁 + /// </summary> + /// <param name="requestUrl">璇锋眰Url</param> + /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param> + /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns> + public async System.Threading.Tasks.Task<string> RequestHttpsZigbeeResultAsync(string requestUrl, byte[] byteData) + { + var result = await RequestHttpsZigbeeBytesResultAsync(requestUrl, byteData); + if (result != null) + { + return Encoding.UTF8.GetString(result); + } + return null; + } + + /// <summary> + /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁 + /// </summary> + /// <param name="requestUrl">璇锋眰Url</param> + /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param> + /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param> + /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns> + public async System.Threading.Tasks.Task<byte[]> RequestHttpsZigbeeBytesResultAsync(string requestUrl, byte[] byteData, string requestMethod = "POST") + { + //璇锋眰Url鐨勫畬鎴愯矾寰� + var fullUrl = $"{RequestHttpsHost}/{requestUrl}"; + return await this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.Token, requestMethod); + } + + /// <summary> + /// <pra>璇锋眰鏈嶅姟鍣ㄦ柟娉�,鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁</pra> + /// <pra>娉ㄦ剰!!姝ゆ柟娉曚粎闄愩�愭嫢鏈夌鐞嗗憳鏉冮檺鐨勬垚鍛樸�戣皟鐢�</pra> + /// </summary> + /// <param name="requestUrl">璇锋眰Url</param> + /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param> + /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param> + /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns> + public async System.Threading.Tasks.Task<byte[]> RequestZigbeeHttpsByAdmin(string requestUrl, byte[] byteData, string requestMethod = "POST") + { + //璇锋眰Url鐨勫畬鎴愯矾寰� + var fullUrl = $"{Config.Instance.AdminRequestBaseUrl}/{requestUrl}"; + return await this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.AdminRequestToken, requestMethod); + } + + /// <summary> + /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁 + /// </summary> + /// <param name="requestFullUrl">璇锋眰Url鐨勫畬鎴愯矾寰�</param> + /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param> + /// <param name="token">token</param> + /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param> + /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns> + public async System.Threading.Tasks.Task<byte[]> DoRequestZigbeeHttpsInterface(string requestFullUrl, byte[] byteData, string token, string requestMethod = "POST") + { + try + { + //鍒濆鍖栨柊鐨剋ebRequst + //1锛� 鍒涘缓httpWebRequest瀵硅薄 + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(requestFullUrl)); + + //2锛� 鍒濆鍖朒ttpWebRequest瀵硅薄 + webRequest.Method = requestMethod; + webRequest.Timeout = 10 * 1000; + if (token != null) + { + //瀵瑰簲寰俊缃戝潃 + webRequest.Headers.Add(HttpRequestHeader.Authorization, token); + } + if (requestMethod == "GET") + { + //webRequest.ContentType = "text/html"; + webRequest.ContentType = "application/json"; + } + else + { + webRequest.ContentType = "application/json"; + webRequest.ContentLength = byteData.Length; + + //3锛� 闄勫姞瑕丳OST缁欐湇鍔″櫒鐨勬暟鎹埌HttpWebRequest瀵硅薄(闄勫姞POST鏁版嵁鐨勮繃绋嬫瘮杈冪壒娈婏紝瀹冨苟娌℃湁鎻愪緵涓�涓睘鎬х粰鐢ㄦ埛瀛樺彇锛岄渶瑕佸啓鍏ttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰銆�) + var newStream = webRequest.GetRequestStream();//鍒涘缓涓�涓猄tream,璧嬪�兼槸鍐欏叆HttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰 + newStream.Write(byteData, 0, byteData.Length); + newStream.Flush(); + newStream.Close(); + } + + //4锛� 璇诲彇鏈嶅姟鍣ㄧ殑杩斿洖淇℃伅 + var response = (HttpWebResponse)webRequest.GetResponse(); + using (var stream = response.GetResponseStream()) + { + if (stream == null) + { + return null; + } + var ms = new MemoryStream(); + var bytes = new byte[1024]; + var len = int.MaxValue; + while (stream.CanRead && 0 < len) + { + len = stream.Read(bytes, 0, bytes.Length); + ms.Write(bytes, 0, len); + } + return ms.ToArray(); + } + } + catch (Exception e) + { +#if DEBUG + System.Console.WriteLine(e.Message); +#endif + return null; + } + } + + /// <summary> + /// 鏈嶅姟鍣ㄨ幏鍙栨暟鎹け璐ユ彁绀� + /// </summary> + public void FailureToServer() + { + Application.RunOnMainThread(() => + { + var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.RequestServerFailed), Language.StringByID(R.MyInternationalizationString.Confrim)); + alert.Show(); + }); + } + /// <summary> + /// 鏄剧ず閿欒鎻愮ず + /// </summary> + /// <param name="errorStringID">Error string identifier.</param> + public void ShowErrorInfoAlert(int errorStringID) + { + Application.RunOnMainThread(() => + { + var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(errorStringID), Language.StringByID(R.MyInternationalizationString.Confrim)); + alert.Show(); + }); + } + /// <summary> + /// Get鏈嶅姟鍣ㄦ柟娉�1 + /// </summary> + public string GetMethod(string requestUrl) + { + string requestMethod = "get"; + string urlHead = $"{RequestHttpsHost}/FeerView/"; + string url = urlHead + requestUrl; + HttpWebRequest httpWebRequestObj = WebRequest.CreateHttp(url); + httpWebRequestObj.Method = requestMethod; + using (HttpWebResponse httpWebResponseObj = httpWebRequestObj.GetResponse() as HttpWebResponse) + { + if (httpWebResponseObj == null) + { + return null; + } + else + { + Stream ResponseStream = httpWebResponseObj.GetResponseStream(); + using (StreamReader Sr = new StreamReader(ResponseStream)) + { + string responseString = Sr.ReadToEnd(); + return responseString; + } + } + } + } + + /// <summary> + /// 鐧诲嚭 + /// </summary> + public void SingOut() + { + try + { + Application.RunOnMainThread(() => + { + //璁惧畾涓�涓椂闂� + Config.Instance.LoginDateTime = new DateTime(1970, 1, 1); + Config.Instance.Save(); + CommonPage.Instance.RemoveAll(); + CommonPage.Instance.Show(); + var login = new Phone.Login.AccountLogin(); + CommonPage.Instance.AddChidren(login); + login.Show(); + }); + } + catch { } + } + + /// <summary> + /// 閫�鍑虹櫥褰曟椂璋冪敤锛屾竻闄ゆ帹閫佹暟鎹� + /// </summary> + public void SignOutClearData() + { + try + { + System.Threading.Tasks.Task.Run(() => + { + using (var client = new System.Net.Http.HttpClient()) + { + client.DefaultRequestHeaders.Add("ContentType", "application/json"); + client.DefaultRequestHeaders.Add("Authorization", Shared.Common.Config.Instance.Token); + var responseString = client.GetStringAsync($"{CommonPage.RequestHttpsHost}/ZigbeeUsers/SignOut"); + } + }); + } + catch { } + } + + /// <summary> + /// 鐧诲綍鎴愬姛鍚庝笂鎶ヨ澶噄d绛夌浉鍏充俊鎭粰鍚庣 + /// </summary> + /// <returns>杩斿洖鐘舵�佺爜</returns> + public async System.Threading.Tasks.Task<string> PushRegID() + { + try + { + string deviceAlias; + string deviceType; +#if iOS + deviceAlias = UIKit.UIDevice.CurrentDevice.Name; + deviceType = "iphone"; +#elif Android + deviceAlias = Android.OS.Build.Manufacturer; + deviceType = "android"; +#endif + var RegIDObj = new SendDataToServer.SignZigbeeNeedPushRegIDObj() + { + RegID = Shared.Common.Config.Instance.RegistrationID, + DeviceAlias = deviceAlias, + DeviceType = deviceType + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(RegIDObj); + var reverObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/SignZigbeeNeedPushRegID", System.Text.Encoding.UTF8.GetBytes(requestJson)); + if (reverObj == null) + { + return null; + } + return reverObj.StateCode; + } + catch + { + return null; + } + } + } +} -- Gitblit v1.8.0