From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs |  649 ++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 354 insertions(+), 295 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
index afe3f2f..aa44917 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
@@ -1,389 +1,327 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Net;
-using System.Runtime.Remoting.Contexts;
 using System.Text;
 using Shared.Common;
-using Shared.Phone.Device.CommonForm;
+
 namespace Shared.Phone.UserCenter.Abount
 {
     /// <summary>
     /// 鍏充簬鐨勭敾闈�
     /// </summary>
-    public class AbountForm : UserCenterCommonForm
+    public class AbountForm : EditorCommonForm
     {
-        #region **鍙橀噺*****************************
+        #region 鈼� 鍙橀噺____________________________
         /// <summary>
         /// 鏄惁姝e湪鏇存柊涓�
         /// </summary>
-        public bool isUpdating=false;
+        public bool isUpdating;
         /// <summary>
         /// The web client.
         /// </summary>
-        public WebClient webClient=new WebClient { };
-        /// <summary>
-        /// 杩涘害鏉�
-        /// </summary>
-        public HorizontalSeekBar seekBar;
-        /// <summary>
-        /// 杩涘害鐧惧垎姣�
-        /// </summary>
-        public Button seekBarTitle;
-        /// <summary>
-        /// 鍙栨秷涓嬭浇鎸夐挳
-        /// </summary>
-        public Button cancelDownLoadBtn;
-        /// <summary>
-        /// 鏇存柊鎸夐挳
-        /// </summary>
-        public Button updateBtn;
+        public WebClient webClient = new WebClient { };
         /// <summary>
         /// 鏇存柊涓�
         /// </summary>
-        public Button updatingBtn;
+        public NormalViewControl btnUpdating;
         /// <summary>
-        /// The instance.
+        /// distributedMark
         /// </summary>
-        public static AbountForm instance;
+        public string distributedMark;
+        /// <summary>
+        /// updateRow
+        /// </summary>
+        public FrameRowControl rowUpdate;
+        /// <summary>
+        /// 涓嬭浇瀹夊崜apk鐨刡yte闀垮害
+        /// </summary>
+        public long ApkBytesTotalLength = 0;
+
         #endregion
+
         /// <summary>
-        /// Initializes a new instance of the <see cref="T:Shared.Phone.UserCenter.Abount.AbountForm"/> class.
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
         /// </summary>
-        public AbountForm()
+        public void ShowForm()
         {
-            instance = this;
+            //璁剧疆鏍囬淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAboutMe));
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
         }
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        public void ShowForm()
-        {
-            //璁剧疆鏍囬淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uVersionInformation));
-            //鍒濆鍖栦腑閮ㄦ帶浠�
-            this.InitMiddleFrame();
-        }
         /// <summary>
         /// Closes the form.
         /// </summary>
-        public override void CloseForm(bool isCloseForm = true)
+        public override void CloseFormBefore()
         {
 #if Android
-            if(isUpdating==true)
+            SetDownLoadBtnNoVisible();
+            CancelDownLoadApkAsync();
+            base.CloseFormBefore();
+#elif iOS
+           base.CloseFormBefore();
+#endif
+        }
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //澶撮儴鐧借壊鑳屾櫙
+            var frameLogo = new FrameLayoutBase();
+            frameLogo.Height = Application.GetRealHeight(484);
+            frameLogo.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            bodyFrameLayout.AddChidren(frameLogo);
+            //鍥炬爣鐨勫鍣�
+            var frameLogoBackground = new FrameLayoutBase();
+            frameLogoBackground.Y = Application.GetRealHeight(104);
+            frameLogoBackground.Width = this.GetPictrueRealSize(167);
+            frameLogoBackground.Height = this.GetPictrueRealSize(167);
+            frameLogoBackground.Gravity = Gravity.CenterHorizontal;
+            frameLogoBackground.BackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor;
+            frameLogoBackground.Radius = (uint)Application.GetRealHeight(37);
+            frameLogo.AddChidren(frameLogoBackground);
+            //鍥炬爣
+            var btnLogo = new IconViewControl(144);
+            btnLogo.UnSelectedImagePath = "Account/Logo_White.png";
+            btnLogo.Gravity = Gravity.Center;
+            frameLogoBackground.AddChidren(btnLogo);
+            //HDL Home
+            var btnName = new NormalViewControl(700, 60, true);
+            btnName.Y = Application.GetRealHeight(294);
+            btnName.Gravity = Gravity.CenterHorizontal;
+            btnName.Text = "HDL Home";
+            btnName.TextSize = 15;
+            btnName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
+            btnName.TextAlignment = TextAlignment.Center;
+            frameLogo.AddChidren(btnName);
+            //鐗堟湰鍙�
+            var btnVersion = new NormalViewControl(700, 50, true);
+            btnVersion.Y = Application.GetRealHeight(366);
+            btnVersion.Gravity = Gravity.CenterHorizontal;
+            btnVersion.Text = $"{Language.StringByID(R.MyInternationalizationString.VersionCode)} {CommonPage.CodeIDString}";
+            btnVersion.TextSize = 12;
+            btnVersion.TextColor = ZigbeeColor.Current.GXCTextGrayColor;
+            btnVersion.TextAlignment = TextAlignment.Center;
+            frameLogo.AddChidren(btnVersion);
+            //鍒楄〃鎺т欢
+            var listView = new FrameListControl(12);
+            listView.Y = frameLogo.Bottom + Application.GetRealHeight(23);
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            listView.Height = Application.GetRealHeight(500);
+            bodyFrameLayout.AddChidren(listView);
+            //鏈嶅姟鍗忚
+            //var rowService = new FrameRowControl(listView.rowSpace / 2);
+            //listView.AddChidren(rowService);
+            //rowService.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.SLA), 400);
+            //rowService.AddRightArrow();
+            //rowService.AddBottomLine();
+            //鐗堟湰鏇存柊
+            this.rowUpdate = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(rowUpdate);
+            rowUpdate.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.UpdateVersion), 400);
+            rowUpdate.AddRightArrow();
+            var btnRightView = rowUpdate.AddMostRightView("", 400);
+            rowUpdate.CanClick = false;
+            rowUpdate.ButtonClickEvent += (sender, e) =>
             {
-                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CancelUpdating), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                alert.Show();
-                alert.ResultEventHandler += (send, e) =>
+                UpdateVersion();
+            };
+            //璋冩暣妗屽竷楂樺害
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+
+            //鏇存柊涓�
+            this.btnUpdating = new NormalViewControl(556, 106, true);
+            btnUpdating.Y = Application.GetRealHeight(994);
+            btnUpdating.Radius = (uint)Application.GetRealHeight(53);
+            btnUpdating.BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor;
+            btnUpdating.TextID = R.MyInternationalizationString.Updating;
+            btnUpdating.TextSize = 15;
+            btnUpdating.TextColor = ZigbeeColor.Current.GXCTextWhiteColor;
+            btnUpdating.Gravity = Gravity.CenterHorizontal;
+            btnUpdating.TextAlignment = TextAlignment.Center;
+            bodyFrameLayout.AddChidren(btnUpdating);
+
+            //璁剧疆杩涘害鎺т欢涓嶅彲瑙�
+            this.SetDownLoadBtnNoVisible();
+
+            //妫�娴嬫柊鐗堟湰
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                var result = await CanUpdateAsync();
+                HdlThreadLogic.Current.RunMain(() =>
                 {
-                    if (e)
+                    if (result)
                     {
-                        updateBtn.Visible = true;
-                        SetDownLoadBtnNoVisible();
-                        CommonPage.CancelDownLoadApkAsync();
-                        base.CloseForm(isCloseForm);
+                        //鏇存柊鏈�鏂扮増
+                        btnRightView.TextID = R.MyInternationalizationString.Update;
+                        rowUpdate.CanClick = true;
                     }
                     else
                     {
-                        return;
+                        btnRightView.TextID = R.MyInternationalizationString.TheAppVersionIsNewest;
                     }
-                };
-            }
-            else
-            {
-                Phone.UserView.HomePage.Instance.ScrollEnabled = true;
-                base.CloseForm(isCloseForm);
-            }
-#elif iOS
-           base.CloseForm(isCloseForm);
-#endif
+                });
+
+            });
         }
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄦ帶浠�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            var logoBtn = new Button()
-            {
-                Width = Application.GetMinRealAverage(270),
-                Height = Application.GetMinRealAverage(270),
-                Y = Application.GetRealHeight(100),
-                UnSelectedImagePath = "Logo/Logo.png",
-                Gravity = Gravity.CenterHorizontal
-            };
-            bodyFrameLayout.AddChidren(logoBtn);
 
-            var nameBtn = new Button()
-            {
-                Width = Application.GetMinRealAverage(700),
-                Height = Application.GetMinRealAverage(100),
-                Y = Application.GetRealHeight(100)+logoBtn.Bottom,
-                Gravity = Gravity.CenterHorizontal,
-                Text="HDL Home",
-                TextSize=20,
-                TextColor=ZigbeeColor.Current.GXCTextBlackColor
-            };
-            bodyFrameLayout.AddChidren(nameBtn);
-
-            var versionBtn = new Button()
-            {
-                Width = Application.GetMinRealAverage(700),
-                Height = Application.GetMinRealAverage(100),
-                Y = Application.GetRealHeight(10) + nameBtn.Bottom,
-                Gravity = Gravity.CenterHorizontal,
-                Text = $"v{CommonPage.CodeIDString}",
-                TextSize = 14,
-                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor
-            };
-            bodyFrameLayout.AddChidren(versionBtn);
-
-            updateBtn = new Button()
-            {
-                Y= Application.GetRealHeight(50)+versionBtn.Bottom,
-                Width = Application.GetMinRealAverage(700),
-                Gravity = Gravity.CenterHorizontal,
-                Height =Application.GetRealHeight(Shared.Common.CommonPage.ButtonHeight),
-                TextID=R.MyInternationalizationString.Update,
-                TextColor=ZigbeeColor.Current.GXCTextBlueColor
-            };
-            bodyFrameLayout.AddChidren(updateBtn);
-            updateBtn.MouseUpEventHandler += GetVersion;
-
-            seekBar = new HorizontalSeekBar()
-            {
-                Y = updateBtn.Bottom + Application.GetRealHeight(50),
-                Width = Application.GetRealWidth(750),
-                Height = Application.GetRealHeight(80),
-                Gravity = Gravity.CenterHorizontal,
-                BackgroundColor = ZigbeeColor.Current.GXCSliderUnSelectedColor,
-                ThumbColor = 0x00000000,
-                ProgressColor = ZigbeeColor.Current.GXCButtonBlueColor,
-                Max = 100,
-                Progress = 0,
-                IsCanScrolled=false,
-                IsCanMove=false
-            };
-            bodyFrameLayout.AddChidren(seekBar);
-
-            seekBarTitle = new Button()
-            {
-                Y = updateBtn.Bottom + Application.GetRealHeight(50),
-                X= seekBar.Right+Application.GetRealWidth(10),
-                Width = Application.GetRealWidth(150),
-                Height = Application.GetRealHeight(80),
-                Text = $"{seekBar.Progress}%",
-                TextAlignment=TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-            };
-            bodyFrameLayout.AddChidren(seekBarTitle);
-
-            updatingBtn = new Button()
-            {
-                Y = seekBar.Bottom + Application.GetRealHeight(20),
-                Width = Application.GetRealWidth(300),
-                Height = Application.GetRealHeight(80),
-                TextID= R.MyInternationalizationString.Updating,
-                TextAlignment = TextAlignment.Center,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                Gravity=Gravity.CenterHorizontal
-            };
-            bodyFrameLayout.AddChidren(updatingBtn);
-            cancelDownLoadBtn = new Button()
-            {
-                TextID = R.MyInternationalizationString.Cancel,
-                TextColor = ZigbeeColor.Current.GXCTextBlueColor,
-                Height = Application.GetRealHeight(80),
-                Width = Application.GetRealWidth(500),
-                Gravity = Gravity.CenterHorizontal,
-                Y = updatingBtn.Bottom + Application.GetRealHeight(500)
-            };
-            bodyFrameLayout.AddChidren(cancelDownLoadBtn);
-#if Android
-            cancelDownLoadBtn.MouseUpEventHandler += CancelDownLoadApk;
-#endif
-            SetDownLoadBtnNoVisible();
-        }
         /// <summary>
         /// 璁剧疆杩涘害鎺т欢涓嶅彲瑙�
         /// </summary>
-        public void SetDownLoadBtnNoVisible()
+        private void SetDownLoadBtnNoVisible()
         {
-            Phone.UserView.HomePage.Instance.ScrollEnabled = true;
             isUpdating = false;
-            updateBtn.Visible = true;
-            seekBar.Visible = seekBarTitle.Visible = cancelDownLoadBtn.Visible = updatingBtn.Visible = false;
+            btnUpdating.Visible = false;
         }
         /// <summary>
         /// 璁剧疆杩涘害鎺т欢鍙
         /// </summary>
-        public void SetDownLoadBtnVisible()
+        private void SetDownLoadBtnVisible()
         {
-            Phone.UserView.HomePage.Instance.ScrollEnabled = false;
             isUpdating = true;
-            updateBtn.Visible = false;
-            seekBar.Visible = seekBarTitle.Visible = cancelDownLoadBtn.Visible = updatingBtn.Visible = true;
+            btnUpdating.Visible = true;
+            rowUpdate.CanClick = false;
         }
+
         /// <summary>
-        /// Gets the version.
+        /// 妫�鏌ョ増鏈�
         /// </summary>
-        /// <param name="sender">Sender.</param>
-        /// <param name="e">E.</param>
-        private async void GetVersion(object sender, MouseEventArgs e)
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<bool> CanUpdateAsync()
         {
 #if iOS
-                try
-                {
-                    CommonPage.Loading.Start();
-                    var versionResult = await Shared.Common.CommonPage.Instance.RequestHttpsiOSAppVersionAsync();
+            try
+            {
+                    var versionResult = await RequestHttpsiOSAppVersionAsync();
                     if (versionResult == null || versionResult.Results == null)
                     {
-                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                        return;
+                        return false;
                     }
                     var results = Newtonsoft.Json.Linq.JArray.Parse(versionResult.Results.ToString());
                     if (results[0] == null)
                     {
-                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                        return;
+                        return false;
                     }
                     var newVersion = results[0]["version"]?.ToString();
                     var updateContent = results[0]["releaseNotes"]?.ToString();
-                    if (newVersion != CommonPage.CodeIDString)
+                    if (newVersion.CompareTo(CommonPage.CodeIDString) > 0)
                     {
-                        Application.RunOnMainThread(() =>
-                        {
-                            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.UpdateContent), updateContent, Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                            alert.Show();
-                            alert.ResultEventHandler += (sender1, e1) =>
-                            {
-                                if (e1)
-                                {
-                                    CommonPage.Instance.OpenUrl();
-                                }
-                            };
-                        });
+                        return true;
                     }
-                    else
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.TheAppVersionIsNewest), Language.StringByID(R.MyInternationalizationString.Close));
-                            alert.Show();
-                        });
-                    }
+                    return false;
                 }
                 catch
                 {
+                   return false;
+                }
 
-                }
-                finally
-                {
-                    CommonPage.Loading.Hide();
-                }
 #elif Android
             try
             {
-                CommonPage.Loading.Start();
-                var versionResult = await CommonPage.Instance.RequestHttpsAndroidAppVersionAsync();
+                var versionResult = await RequestHttpsAndroidAppVersionAsync();
                 if (versionResult == null)
                 {
-                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                    return;
+                    return false;
                 }
-                if (versionResult.FirmwareVersion != CommonPage.CodeIDString)
+                if (int.Parse(versionResult.FirmwareVersion.Replace(".", "")) > int.Parse(CommonPage.CodeIDString.Replace(".", "")))
                 {
-                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.UpdateContent), versionResult.Remarks, Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                    alert.Show();
-                    alert.ResultEventHandler += async (sender1, e1) =>
-                    {
-                        if (e1)
-                        {
-                            try
-                            {
-                                SetDownLoadBtnVisible();
-                                var requestObj = new SendDataToServer.DownLoadAndroidApk
-                                {
-                                    RequestVersion = CommonPage.RequestVersion,
-                                    DistributedMark = versionResult.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)
-                                {
-                                    SetDownLoadBtnNoVisible();
-                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                                    return;
-                                }
-                                var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString());
-                                if (bytesTotalLength == 0)
-                                {
-                                    SetDownLoadBtnNoVisible();
-                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                                    return;
-                                }
-                                CommonPage.ApkBytesTotalLength = bytesTotalLength;
-                                var bytes = await CommonPage.Instance.DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson));
-                                if (bytes == null)
-                                {
-                                    SetDownLoadBtnNoVisible();
-                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
-                                    return;
-                                }
-                                if(bytes.ToString().Contains("DownloadFail"))
-                                {
-                                    SetDownLoadBtnNoVisible();
-                                    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)
-                            {
-                                SetDownLoadBtnNoVisible();
-                                System.Console.WriteLine($"涓嬭浇澶辫触--{ex.Message}");
-                            }
-                        }
-                    };
+                    distributedMark = versionResult.DistributedMark;
+                    return true;
                 }
-                else
-                {
-                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.TheAppVersionIsNewest), Language.StringByID(R.MyInternationalizationString.Close));
-                    alert.Show();
-                }
+                return false;
             }
             catch (Exception ex)
             {
-                SetDownLoadBtnNoVisible();
-                System.Console.WriteLine(ex.Message);
-            }
-            finally
-            {
-                CommonPage.Loading.Hide();
+                return false;
             }
 #endif
         }
 
-#if Android
         /// <summary>
-        /// Cancels down load apk.
+        /// 鏇存柊
         /// </summary>
-        private void CancelDownLoadApk(object sender,MouseEventArgs mouseEventArgs)
+        private async void UpdateVersion()
         {
-            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CancelUpdating), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-            alert.Show();
-            alert.ResultEventHandler += (send, e) =>
-              {
-                  if (e)
-                  {
-                      isUpdating = false;
-                      updateBtn.Visible = true;
-                      SetDownLoadBtnNoVisible();
-                      CommonPage.CancelDownLoadApkAsync();
-                  }
-              };
+#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
         }
+
+#if iOS
+        /// <summary>
+        /// 鑾峰彇iOS-APP鐗堟湰淇℃伅
+        /// </summary>
+        /// <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
+
         /// <summary>
         /// Install the specified context.
         /// </summary>
@@ -411,6 +349,127 @@
             }
             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();
+                    btnUpdating.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