From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期五, 28 二月 2020 15:25:13 +0800 Subject: [PATCH] 2020.2.28 --- ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs | 566 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 282 insertions(+), 284 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs index 19ee107..7a6e5b4 100644 --- a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs @@ -25,17 +25,17 @@ /// 鏇存柊涓� /// </summary> public Button updatingBtn; - /// <summary> - /// distributedMark + /// <summary> + /// distributedMark /// </summary> - public string distributedMark; - /// <summary> - /// updateRow - /// </summary> - public DeviceInfoRow updateRow; - /// <summary> - /// 涓嬭浇瀹夊崜apk鐨刡yte闀垮害 - /// </summary> + public string distributedMark; + /// <summary> + /// updateRow + /// </summary> + public DeviceInfoRow updateRow; + /// <summary> + /// 涓嬭浇瀹夊崜apk鐨刡yte闀垮害 + /// </summary> public long ApkBytesTotalLength = 0; #endregion @@ -45,7 +45,7 @@ /// </summary> public AbountForm() { - + } /// <summary> /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) @@ -95,21 +95,21 @@ private void InitMiddleFrame() { bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - var logoFrameLayout = new FrameLayout - { - Height = Application.GetRealHeight(484), - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + var logoFrameLayout = new FrameLayout + { + Height = Application.GetRealHeight(484), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; bodyFrameLayout.AddChidren(logoFrameLayout); - var logoBackground = new FrameLayout - { - Y = Application.GetRealHeight(104), + var logoBackground = new FrameLayout + { + Y = Application.GetRealHeight(104), Width = Application.GetMinRealAverage(167), - Height = Application.GetMinRealAverage(167), - Gravity = Gravity.CenterHorizontal, - BackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor, - Radius = (uint)Application.GetRealHeight(37), + Height = Application.GetMinRealAverage(167), + Gravity = Gravity.CenterHorizontal, + BackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor, + Radius = (uint)Application.GetRealHeight(37), }; logoFrameLayout.AddChidren(logoBackground); @@ -147,40 +147,40 @@ logoFrameLayout.AddChidren(versionBtn); - var versionFL = new FrameLayout - { - Y = Application.GetRealHeight(510), - Height = Application.GetRealHeight(300), - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + var versionFL = new FrameLayout + { + Y = Application.GetRealHeight(510), + Height = Application.GetRealHeight(300), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; - bodyFrameLayout.AddChidren(versionFL); - - var SLARow = new DeviceInfoRow(12); - SLARow.Init(); - SLARow.SetTipTitle(R.MyInternationalizationString.SLA); - SLARow.NameText.TextAlignment = TextAlignment.CenterRight; - versionFL.AddChidren(SLARow); - SLARow.ClickBtn.MouseUpEventHandler += (sender, e) => - { - var slaForm = new SLAForm(); - slaForm.AddForm(); + bodyFrameLayout.AddChidren(versionFL); + + var SLARow = new DeviceInfoRow(12); + SLARow.Init(); + SLARow.SetTipTitle(R.MyInternationalizationString.SLA); + SLARow.NameText.TextAlignment = TextAlignment.CenterRight; + versionFL.AddChidren(SLARow); + SLARow.ClickBtn.MouseUpEventHandler += (sender, e) => + { + var slaForm = new SLAForm(); + slaForm.AddForm(); }; - updateRow = new DeviceInfoRow(12 + 127 + 12); - updateRow.Init(); - updateRow.SetTipTitle(R.MyInternationalizationString.UpdateVersion); - updateRow.NameText.TextAlignment = TextAlignment.CenterRight; - updateRow.HideLine(true); - updateRow.SetTitle(R.MyInternationalizationString.TheAppVersionIsNewest); - updateRow.CanClick(false); - updateRow.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor); - versionFL.AddChidren(updateRow); - updateRow.ClickBtn.MouseUpEventHandler += (sender, e) => - { - UpdateVersion(); - }; + updateRow = new DeviceInfoRow(12 + 127 + 12); + updateRow.Init(); + updateRow.SetTipTitle(R.MyInternationalizationString.UpdateVersion); + updateRow.NameText.TextAlignment = TextAlignment.CenterRight; + updateRow.HideLine(true); + updateRow.SetTitle(R.MyInternationalizationString.TheAppVersionIsNewest); + updateRow.CanClick(false); + updateRow.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor); + versionFL.AddChidren(updateRow); + updateRow.ClickBtn.MouseUpEventHandler += (sender, e) => + { + UpdateVersion(); + }; - + updatingBtn = new Button() { Y = Application.GetRealHeight(994), @@ -194,31 +194,31 @@ Gravity=Gravity.CenterHorizontal }; bodyFrameLayout.AddChidren(updatingBtn); - + SetDownLoadBtnNoVisible(); CheckVersion(); } - /// <summary> - /// CheckVersion + /// <summary> + /// CheckVersion /// </summary> - private void CheckVersion() - { - new System.Threading.Thread(async () => - { - var re = await CanUpdateAsync(); - if (re) - { - Application.RunOnMainThread(() => - { - updateRow.CanClick(true); - updateRow.SetTitleColor(ZigbeeColor.Current.GXCButtonSelectedColor); - updateRow.SetTitle(R.MyInternationalizationString.Update); - }); - } - }) + private void CheckVersion() + { + new System.Threading.Thread(async () => + { + var re = await CanUpdateAsync(); + if (re) + { + Application.RunOnMainThread(() => + { + updateRow.CanClick(true); + updateRow.SetTitleColor(ZigbeeColor.Current.GXCButtonSelectedColor); + updateRow.SetTitle(R.MyInternationalizationString.Update); + }); + } + }) { IsBackground = true }.Start(); - + } /// <summary> /// 璁剧疆杩涘害鎺т欢涓嶅彲瑙� @@ -238,16 +238,15 @@ updateRow.CanClick(false); } - /// <summary> - /// 妫�鏌ョ増鏈� - /// </summary> + /// <summary> + /// 妫�鏌ョ増鏈� + /// </summary> /// <returns></returns> - private async System.Threading.Tasks.Task<bool> CanUpdateAsync() - { + private async System.Threading.Tasks.Task<bool> CanUpdateAsync() + { #if iOS try { - CommonPage.Loading.Start(); var versionResult = await RequestHttpsiOSAppVersionAsync(); if (versionResult == null || versionResult.Results == null) { @@ -264,14 +263,13 @@ { return true; } - retuun false; + return false; } catch { - return false; - + return false; } - + #elif Android try { @@ -291,93 +289,93 @@ { return false; } +#endif + } + + /// <summary> + /// 鏇存柊 + /// </summary> + private async void UpdateVersion() + { +#if iOS + OpenUrl(); +#elif Android + try + { + var requestObj = new SendDataToServer.DownLoadAndroidApk + { + RequestVersion = CommonPage.RequestVersion, + DistributedMark = distributedMark + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); + + var bytesTotalLengthResult = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", Encoding.UTF8.GetBytes(requestJson)); + if (bytesTotalLengthResult == null || bytesTotalLengthResult.ResponseData == null) + { + CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); + return; + } + var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString()); + if (bytesTotalLength == 0) + { + CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); + return; + } + ApkBytesTotalLength = bytesTotalLength; + var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson)); + if (bytes == null) + { + CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); + return; + } + if (bytes.ToString().Contains("DownloadFail")) + { + CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); + return; + } + var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk"); + Shared.IO.FileUtils.WriteFileByBytes(path, bytes); + Install(Shared.Application.Activity); + } + catch (Exception ex) + { + System.Console.WriteLine($"涓嬭浇澶辫触--{ex.Message}"); + } #endif } - /// <summary> - /// 鏇存柊 +#if iOS + /// <summary> + /// 鑾峰彇iOS-APP鐗堟湰淇℃伅 /// </summary> - private async void UpdateVersion() - { -#if iOS - CommonPage.Instance.OpenUrl(); + /// <returns>The https app version async.</returns> + public async System.Threading.Tasks.Task<Common.ResponseEntity.ResultPack> RequestHttpsiOSAppVersionAsync() + { + try + { + var webClient = new WebClient { }; + var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1461693569"); + if (result == null) + { + return null; + } + return Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResultPack>(Encoding.UTF8.GetString(result)); + } + catch + { + return null; + } + } + /// <summary> + /// 璺宠浆鍒癆PP Store + /// </summary> + public void OpenUrl() + { + Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1461693569?mt=8"); + UIKit.UIApplication.SharedApplication.OpenUrl(url); + } #elif Android - try - { - var requestObj = new SendDataToServer.DownLoadAndroidApk - { - RequestVersion = CommonPage.RequestVersion, - DistributedMark = distributedMark - }; - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); - - var bytesTotalLengthResult = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", Encoding.UTF8.GetBytes(requestJson)); - if (bytesTotalLengthResult == null || bytesTotalLengthResult.ResponseData == null) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString()); - if (bytesTotalLength == 0) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - ApkBytesTotalLength = bytesTotalLength; - var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson)); - if (bytes == null) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - if (bytes.ToString().Contains("DownloadFail")) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - return; - } - var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk"); - Shared.IO.FileUtils.WriteFileByBytes(path, bytes); - Install(Shared.Application.Activity); - } - catch (Exception ex) - { - System.Console.WriteLine($"涓嬭浇澶辫触--{ex.Message}"); - } -#endif - } - -#if iOS - /// <summary> - /// 鑾峰彇iOS-APP鐗堟湰淇℃伅 - /// </summary> - /// <returns>The https app version async.</returns> - public async System.Threading.Tasks.Task<ResponseEntity.ResultPack> RequestHttpsiOSAppVersionAsync() - { - try - { - var webClient = new WebClient { }; - var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1461693569"); - if (result == null) - { - return null; - } - return Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseEntity.ResultPack>(Encoding.UTF8.GetString(result)); - } - catch - { - return null; - } - } - /// <summary> - /// 璺宠浆鍒癆PP Store - /// </summary> - public void OpenUrl() - { - Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1461693569?mt=8"); - UIKit.UIApplication.SharedApplication.OpenUrl(url); - } -#elif Android - + /// <summary> /// Install the specified context. /// </summary> @@ -404,127 +402,127 @@ intent.SetDataAndType(Android.Net.Uri.FromFile(file), "application/vnd.android.package-archive"); } context.StartActivity(intent); - } - - /// <summary> - /// 鑾峰彇 Android-APP 鐗堟湰淇℃伅 - /// </summary> - /// <returns>The https app version async.</returns> - private async System.Threading.Tasks.Task<Common.ResponseEntity.ApkInfoOBJ> RequestHttpsAndroidAppVersionAsync() - { - try - { - var requestOBJ = new SendDataToServer.GetAndroidApkInfoOBJ - { - Name = "ZigbeeApp", - RequestVersion = CommonPage.CodeIDString - }; - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestOBJ); - var result = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DetectionPlatformUploadFirmware", System.Text.Encoding.UTF8.GetBytes(requestJson)); - if (result == null) - { - return null; - } - if (result.StateCode.ToUpper() == "SUCCESS") - { - if (result.ResponseData == null) - { - return null; - } - - var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ApkInfoRes>(result.ResponseData.ToString()); - if (responeData == null || responeData.pageData == null || responeData.pageData.Count == 0) - { - return null; - } - int MaxIndex = 0; - int NewVersion = 0; - for (int i = 0; i < responeData.pageData.Count; i++) - { - var apkInfo = responeData.pageData[i]; - var version = int.Parse(apkInfo.FirmwareVersion.Replace(".", "")); - if (version > NewVersion) - { - NewVersion = version; - MaxIndex = i; - } - } - return responeData.pageData[MaxIndex]; - } - return null; - } - catch (Exception ex) - { - return null; - } - } - - /// <summary> - /// 涓嬭浇瀹夎apk - /// </summary> - /// <returns>The load apk async.</returns> - /// <param name="requestUrl">璇锋眰閾炬帴</param> - /// <param name="byteData">璇锋眰鍙傛暟</param> - private System.Threading.Tasks.Task<byte[]> DownLoadApkAsync(string requestUrl, byte[] byteData) - { - try - { - webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); - webClient.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token); - webClient.UploadProgressChanged += Client_DownloadProgressChanged; - webClient.UploadDataCompleted += Client_UploadCompleted; - var result = webClient.UploadDataTaskAsync($"{CommonPage.RequestHttpsHost}/{requestUrl}", "POST", byteData); - if (result == null) - { - return null; - } - return result; - } - catch (Exception ex) - { - return null; - } - finally - { - } - } - /// <summary> - /// apk涓嬭浇杩涘害 - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="e">E.</param> - void Client_DownloadProgressChanged(object sender, UploadProgressChangedEventArgs e) - { - //System.Console.WriteLine($"褰撳墠杩涘害--{(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)} % --BytesReceived--{e.BytesReceived}--totalByte{e.TotalBytesToReceive}"); - if (e.BytesReceived <= ApkBytesTotalLength) - { - Application.RunOnMainThread(() => - { - SetDownLoadBtnVisible(); - updatingBtn.Text = $"{ Language.StringByID(R.MyInternationalizationString.Updating)} {(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)}%"; - }); - } - } - - /// <summary> - /// Client_UploadCompleted - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - void Client_UploadCompleted(object sender, UploadDataCompletedEventArgs e) - { - System.Console.WriteLine("涓嬭浇apk瀹屾垚"); - SetDownLoadBtnNoVisible(); - } - /// <summary> - /// 鍙栨秷涓嬭浇apk - /// </summary> - private void CancelDownLoadApkAsync() - { - webClient?.CancelAsync(); - SetDownLoadBtnNoVisible(); - System.Console.WriteLine("鍙栨秷涓嬭浇apk"); - } + } + + /// <summary> + /// 鑾峰彇 Android-APP 鐗堟湰淇℃伅 + /// </summary> + /// <returns>The https app version async.</returns> + private async System.Threading.Tasks.Task<Common.ResponseEntity.ApkInfoOBJ> RequestHttpsAndroidAppVersionAsync() + { + try + { + var requestOBJ = new SendDataToServer.GetAndroidApkInfoOBJ + { + Name = "ZigbeeApp", + RequestVersion = CommonPage.CodeIDString + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestOBJ); + var result = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DetectionPlatformUploadFirmware", System.Text.Encoding.UTF8.GetBytes(requestJson)); + if (result == null) + { + return null; + } + if (result.StateCode.ToUpper() == "SUCCESS") + { + if (result.ResponseData == null) + { + return null; + } + + var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ApkInfoRes>(result.ResponseData.ToString()); + if (responeData == null || responeData.pageData == null || responeData.pageData.Count == 0) + { + return null; + } + int MaxIndex = 0; + int NewVersion = 0; + for (int i = 0; i < responeData.pageData.Count; i++) + { + var apkInfo = responeData.pageData[i]; + var version = int.Parse(apkInfo.FirmwareVersion.Replace(".", "")); + if (version > NewVersion) + { + NewVersion = version; + MaxIndex = i; + } + } + return responeData.pageData[MaxIndex]; + } + return null; + } + catch (Exception ex) + { + return null; + } + } + + /// <summary> + /// 涓嬭浇瀹夎apk + /// </summary> + /// <returns>The load apk async.</returns> + /// <param name="requestUrl">璇锋眰閾炬帴</param> + /// <param name="byteData">璇锋眰鍙傛暟</param> + private System.Threading.Tasks.Task<byte[]> DownLoadApkAsync(string requestUrl, byte[] byteData) + { + try + { + webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + webClient.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token); + webClient.UploadProgressChanged += Client_DownloadProgressChanged; + webClient.UploadDataCompleted += Client_UploadCompleted; + var result = webClient.UploadDataTaskAsync($"{CommonPage.RequestHttpsHost}/{requestUrl}", "POST", byteData); + if (result == null) + { + return null; + } + return result; + } + catch (Exception ex) + { + return null; + } + finally + { + } + } + /// <summary> + /// apk涓嬭浇杩涘害 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="e">E.</param> + void Client_DownloadProgressChanged(object sender, UploadProgressChangedEventArgs e) + { + //System.Console.WriteLine($"褰撳墠杩涘害--{(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)} % --BytesReceived--{e.BytesReceived}--totalByte{e.TotalBytesToReceive}"); + if (e.BytesReceived <= ApkBytesTotalLength) + { + Application.RunOnMainThread(() => + { + SetDownLoadBtnVisible(); + updatingBtn.Text = $"{ Language.StringByID(R.MyInternationalizationString.Updating)} {(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)}%"; + }); + } + } + + /// <summary> + /// Client_UploadCompleted + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + void Client_UploadCompleted(object sender, UploadDataCompletedEventArgs e) + { + System.Console.WriteLine("涓嬭浇apk瀹屾垚"); + SetDownLoadBtnNoVisible(); + } + /// <summary> + /// 鍙栨秷涓嬭浇apk + /// </summary> + private void CancelDownLoadApkAsync() + { + webClient?.CancelAsync(); + SetDownLoadBtnNoVisible(); + System.Console.WriteLine("鍙栨秷涓嬭浇apk"); + } #endif } -- Gitblit v1.8.0