From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs |  381 ++++++++++++++++++++++++------------------------------
 1 files changed, 171 insertions(+), 210 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
index 7b0dbfb..e4266a6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs
@@ -1,10 +1,9 @@
 锘縰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>
@@ -20,11 +19,11 @@
         /// <summary>
         /// The web client.
         /// </summary>
-        public WebClient webClient=new WebClient { };
+        public WebClient webClient = new WebClient { };
         /// <summary>
         /// 鏇存柊涓�
         /// </summary>
-        public Button updatingBtn;
+        public NormalViewControl btnUpdating;
         /// <summary>
         /// distributedMark
         /// </summary>
@@ -32,7 +31,7 @@
         /// <summary>
         /// updateRow
         /// </summary>
-        public DeviceInfoRow updateRow;
+        public FrameRowControl rowUpdate;
         /// <summary>
         /// 涓嬭浇瀹夊崜apk鐨刡yte闀垮害
         /// </summary>
@@ -40,13 +39,6 @@
 
         #endregion
 
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:Shared.Phone.UserCenter.Abount.AbountForm"/> class.
-        /// </summary>
-        public AbountForm()
-        {
-
-        }
         /// <summary>
         /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
         /// </summary>
@@ -63,28 +55,9 @@
         public override void CloseFormBefore()
         {
 #if Android
-            //if (isUpdating == true)
-            //{
-                //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)
-                //    {
-                        SetDownLoadBtnNoVisible();
-                        CancelDownLoadApkAsync();
-                        base.CloseFormBefore();
-                    //}
-            //        else
-            //        {
-            //            return;
-            //        }
-            //    };
-            //}
-            //else
-            //{
-            //    base.CloseFormBefore();
-            //}
+            SetDownLoadBtnNoVisible();
+            CancelDownLoadApkAsync();
+            base.CloseFormBefore();
 #elif iOS
            base.CloseFormBefore();
 #endif
@@ -94,141 +67,113 @@
         /// </summary>
         private void InitMiddleFrame()
         {
-            bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
-            var logoFrameLayout = new FrameLayout
+            //澶撮儴鐧借壊鑳屾櫙
+            var frameLogo = new FrameLayoutBase();
+            frameLogo.Height = Application.GetRealHeight(484);
+            frameLogo.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            bodyFrameLayout.AddChidren(frameLogo);
+            //鍥炬爣
+            var btnLogo = new ImageView();
+            btnLogo.Y = Application.GetRealHeight(104);
+            btnLogo.Width = this.GetPictrueRealSize(167);
+            btnLogo.Height = this.GetPictrueRealSize(167);
+            btnLogo.Radius = (uint)Application.GetRealHeight(37);
+            btnLogo.ImagePath = "Account/Logo_Evoyo.png";
+            btnLogo.Gravity = Gravity.CenterHorizontal;
+            frameLogo.AddChidren(btnLogo);
+            //Evoyo Home
+            var btnName = new NormalViewControl(700, 60, true);
+            btnName.Y = Application.GetRealHeight(294);
+            btnName.Gravity = Gravity.CenterHorizontal;
+            btnName.Text = "Evoyo 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();
+            rowService.ButtonClickEvent += (sender, e) =>
             {
-                Height = Application.GetRealHeight(484),
-                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                var form = new SLAForm();
+                form.AddForm();
             };
-            bodyFrameLayout.AddChidren(logoFrameLayout);
 
-            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),
-            };
-            logoFrameLayout.AddChidren(logoBackground);
-
-            var logoBtn = new Button()
-            {
-                Width = Application.GetMinRealAverage(144),
-                Height = Application.GetMinRealAverage(144),
-                UnSelectedImagePath = "Account/Logo_White.png",
-                Gravity = Gravity.Center
-            };
-            logoBackground.AddChidren(logoBtn);
-
-            var nameBtn = new Button()
-            {
-                Y = Application.GetRealHeight(294),
-                Width = Application.GetRealWidth(700),
-                Height = Application.GetRealHeight(60),
-                Gravity = Gravity.CenterHorizontal,
-                Text = "HDL Home",
-                TextSize = 15,
-                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor
-            };
-            logoFrameLayout.AddChidren(nameBtn);
-
-            var versionBtn = new Button()
-            {
-                Y = Application.GetRealHeight(366),
-                Width = Application.GetRealWidth(700),
-                Height = Application.GetRealHeight(50),
-                Gravity = Gravity.CenterHorizontal,
-                Text = $"{Language.StringByID(R.MyInternationalizationString.VersionCode)} {CommonPage.CodeIDString}",
-                TextSize = 12,
-                TextColor = ZigbeeColor.Current.GXCTextGrayColor
-            };
-            logoFrameLayout.AddChidren(versionBtn);
-
-
-            var versionFL = new FrameLayout
-            {
-                Y = Application.GetRealHeight(510),
-                //Height = Application.GetRealHeight(300),
-                Height = Application.GetRealHeight(300-127-12),
-                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();
-            //};
-
-            //updateRow = new DeviceInfoRow(12 + 127 + 12);
-            updateRow = new DeviceInfoRow(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) =>
+            //鐗堟湰鏇存柊
+            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) =>
             {
                 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);
 
-            updatingBtn = new Button()
+            //璁剧疆杩涘害鎺т欢涓嶅彲瑙�
+            this.SetDownLoadBtnNoVisible();
+
+            //妫�娴嬫柊鐗堟湰
+            HdlThreadLogic.Current.RunThread(async () =>
             {
-                Y = Application.GetRealHeight(994),
-                Width = Application.GetRealWidth(556),
-                Height = Application.GetRealHeight(106),
-                Radius=(uint)Application.GetRealHeight(53),
-                BackgroundColor=ZigbeeColor.Current.GXCDailogBackGroundColor,
-                TextID = R.MyInternationalizationString.Updating,
-                TextSize=15,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                Gravity=Gravity.CenterHorizontal
-            };
-            bodyFrameLayout.AddChidren(updatingBtn);
-
-            SetDownLoadBtnNoVisible();
-            CheckVersion();
-        }
-
-        /// <summary>
-        /// CheckVersion
-        /// </summary>
-        private void CheckVersion()
-        {
-            new System.Threading.Thread(async () =>
-            {
-                var re = await CanUpdateAsync();
-                if (re)
+                var result = await CanUpdateAsync();
+                HdlThreadLogic.Current.RunMain(() =>
                 {
-                    Application.RunOnMainThread(() =>
+                    if (result)
                     {
-                        updateRow.CanClick(true);
-                        updateRow.SetTitleColor(ZigbeeColor.Current.GXCButtonSelectedColor);
-                        updateRow.SetTitle(R.MyInternationalizationString.Update);
-                    });
-                }
-            })
-            { IsBackground = true }.Start();
+                        //鏇存柊鏈�鏂扮増
+                        btnRightView.TextID = R.MyInternationalizationString.Update;
+                        rowUpdate.CanClick = true;
+                    }
+                    else
+                    {
+                        btnRightView.TextID = R.MyInternationalizationString.TheAppVersionIsNewest;
+                    }
+                });
 
+            });
         }
+
         /// <summary>
         /// 璁剧疆杩涘害鎺т欢涓嶅彲瑙�
         /// </summary>
         private void SetDownLoadBtnNoVisible()
         {
             isUpdating = false;
-            updatingBtn.Visible = false;
+            btnUpdating.Visible = false;
         }
         /// <summary>
         /// 璁剧疆杩涘害鎺т欢鍙
@@ -236,8 +181,8 @@
         private void SetDownLoadBtnVisible()
         {
             isUpdating = true;
-            updatingBtn.Visible = true;
-            updateRow.CanClick(false);
+            btnUpdating.Visible = true;
+            rowUpdate.CanClick = false;
         }
 
         /// <summary>
@@ -261,7 +206,7 @@
                     }
                     var newVersion = results[0]["version"]?.ToString();
                     var updateContent = results[0]["releaseNotes"]?.ToString();
-                    if (newVersion != CommonPage.CodeIDString)
+                    if (newVersion.CompareTo(CommonPage.CodeIDString) > 0)
                     {
                         return true;
                     }
@@ -275,12 +220,12 @@
 #elif Android
             try
             {
-                var versionResult = await RequestHttpsAndroidAppVersionAsync();
+                var versionResult = RequestHttpsAndroidAppVersionAsync();
                 if (versionResult == null)
                 {
                     return false;
                 }
-                if (int.Parse(versionResult.FirmwareVersion.Replace(".", "")) > int.Parse(CommonPage.CodeIDString.Replace(".", "")))
+                if (versionResult.FirmwareVersion.CompareTo(CommonPage.CodeIDString) > 0)
                 {
                     distributedMark = versionResult.DistributedMark;
                     return true;
@@ -304,35 +249,36 @@
 #elif Android
             try
             {
-                var requestObj = new SendDataToServer.DownLoadAndroidApk
+                var pra = new { RequestVersion = CommonPage.RequestVersion, DistributedMark = distributedMark };
+                var result = HdlFirmwareUpdateLogic.Current.RequestZigbeeHttps("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", pra, 8);
+                if (result == null || result.Length == 0)
                 {
-                    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);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
                     return;
                 }
-                var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString());
+                var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
+                if (jobject.Property("StateCode") == null || jobject["StateCode"].ToString().ToUpper() != "SUCCESS")
+                {
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
+                    return;
+                }
+
+                var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(jobject["ResponseData"].ToString());
                 if (bytesTotalLength == 0)
                 {
-                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
                     return;
                 }
                 ApkBytesTotalLength = bytesTotalLength;
-                var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson));
+                var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra)));
                 if (bytes == null)
                 {
-                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
                     return;
                 }
                 if (bytes.ToString().Contains("DownloadFail"))
                 {
-                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
                     return;
                 }
                 var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk");
@@ -356,7 +302,7 @@
             try
             {
                 var webClient = new WebClient { };
-                var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1461693569");
+                var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1528702586");
                 if (result == null)
                 {
                     return null;
@@ -373,7 +319,7 @@
         /// </summary>
         public void OpenUrl()
         {
-            Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1461693569?mt=8");
+            Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1528702586?mt=8");
             UIKit.UIApplication.SharedApplication.OpenUrl(url);
         }
 #elif Android
@@ -394,7 +340,7 @@
             if (Android.OS.BuildVersionCodes.M < Android.OS.Build.VERSION.SdkInt)
             {
                 //鍙傛暟1 涓婁笅鏂�, 鍙傛暟2 Provider涓绘満鍦板潃 鍜岄厤缃枃浠朵腑淇濇寔涓�鑷�   鍙傛暟3  鍏变韩鐨勬枃浠�
-                var apkUri = Android.Support.V4.Content.FileProvider.GetUriForFile(context, "com.hdl.home.fileProvider", file);
+                var apkUri = Android.Support.V4.Content.FileProvider.GetUriForFile(context, "com.evoyo.home.fileProvider", file);
                 //娣诲姞杩欎竴鍙ヨ〃绀哄鐩爣搴旂敤涓存椂鎺堟潈璇ri鎵�浠h〃鐨勬枃浠�
                 intent.AddFlags(Android.Content.ActivityFlags.GrantReadUriPermission);
                 intent.SetDataAndType(apkUri, "application/vnd.android.package-archive");
@@ -410,48 +356,39 @@
         /// 鑾峰彇 Android-APP 鐗堟湰淇℃伅
         /// </summary>
         /// <returns>The https app version async.</returns>
-        private async System.Threading.Tasks.Task<Common.ResponseEntity.ApkInfoOBJ> RequestHttpsAndroidAppVersionAsync()
+        private 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)
+                var pra = new { Name = "ZigbeeApp", RequestVersion = Common.CommonPage.RequestVersion };
+                var result = HdlFirmwareUpdateLogic.Current.RequestZigbeeHttps("FirmwareMana/DetectionPlatformUploadFirmware", pra, 4);
+                if (result == null || result.Length == 0)
                 {
                     return null;
                 }
-                if (result.StateCode.ToUpper() == "SUCCESS")
+                var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
+                if (jobject.Property("StateCode") == null || jobject["StateCode"].ToString().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;
                 }
-                return null;
+                string resultValue = jobject["ResponseData"].ToString();
+
+                var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ApkInfoRes>(resultValue);
+                if (responeData == null || responeData.pageData == null || responeData.pageData.Count == 0)
+                {
+                    return null;
+                }
+
+                ApkInfoOBJ apkInfoOBJ = null;
+                for (int i = 0; i < responeData.pageData.Count; i++)
+                {
+                    var apkInfo = responeData.pageData[i];
+                    if (apkInfoOBJ == null || apkInfo.FirmwareVersion.CompareTo(apkInfoOBJ.FirmwareVersion) > 0)
+                    {
+                        apkInfoOBJ = apkInfo;
+                    }
+                }
+                return apkInfoOBJ;
             }
             catch (Exception ex)
             {
@@ -470,10 +407,9 @@
             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);
+                var result = webClient.UploadDataTaskAsync($"{HdlFirmwareUpdateLogic.Current.RequestHttpsHost}/{requestUrl}", "POST", byteData);
                 if (result == null)
                 {
                     return null;
@@ -501,7 +437,7 @@
                 Application.RunOnMainThread(() =>
                 {
                     SetDownLoadBtnVisible();
-                    updatingBtn.Text = $"{ Language.StringByID(R.MyInternationalizationString.Updating)} {(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)}%";
+                    btnUpdating.Text = $"{ Language.StringByID(R.MyInternationalizationString.Updating)} {(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)}%";
                 });
             }
         }
@@ -527,5 +463,30 @@
         }
 #endif
 
+        //[Serializable]
+        public class ApkInfoRes
+        {
+            public int PageIndex;
+            public int PageSize;
+            public int TotalCount;
+            public int TotalPages;
+            public bool HasPreviousPage;
+            public bool HasNextPage;
+            public List<ApkInfoOBJ> pageData = new List<ApkInfoOBJ> { };
+        }
+
+        /// <summary>
+        /// 涓嬭浇apk
+        /// </summary>
+        [Serializable]
+        public class ApkInfoOBJ
+        {
+            public string Name { get; set; }
+            public string FirmwareVersion { get; set; }
+            public string Remarks { get; set; }
+            public string DistributedMark { get; set; }
+            public string Id { get; set; }
+            public string CreatedOnUtc { get; set; }
+        }
     }
 }

--
Gitblit v1.8.0