wei
2021-08-27 eda3fb873e59544ff36301b51e05aef64f87b0f9
HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
New file
@@ -0,0 +1,347 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Net;
using System.Text;
using HDL_ON.DAL.Server;
using System.Threading.Tasks;
namespace HDL_ON.UI
{
    /// <summary>
    /// 关于页面
    /// </summary>
    public class AboutOnPage : FrameLayout
    {
        /// <summary>
        ///
        /// </summary>
        FrameLayout bodyView;
        /// <summary>
        /// 版本更新ListCellView
        /// </summary>
        ListCellView versionUpdateView;
        /// <summary>
        /// 新版本的版本号,查询到新版本才赋值
        /// </summary>
        string newAppVersion;
        /// <summary>
        /// 新版本的下载地址
        /// iOS 默认为苹果商店地址
        /// Android 云端返回地址
        /// </summary>
        string newAppVersionUrl = "";
        /// <summary>
        ///
        /// </summary>
        public AboutOnPage()
        {
            bodyView = this;
        }
        /// <summary>
        ///
        /// </summary>
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.About)).LoadTopView();
            Button btnOnIcon = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(106),
                Width = Application.GetRealWidth(58),
                Height = Application.GetRealWidth(58),
                UnSelectedImagePath = "OnIcon.png",
            };
            bodyView.AddChidren(btnOnIcon);
            Button btnOnTitle = new Button()
            {
                //Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(184),
                Height = Application.GetRealWidth(28),
                TextAlignment = TextAlignment.Center,
                Text = "ON+",
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
                IsBold = true,
            };
            bodyView.AddChidren(btnOnTitle);
#if DEBUG
            //btnOnIcon.MouseUpEventHandler += (sender, e) =>
            //{
            //    ESOnVideo.Current.Test();
            //};
            //btnOnTitle.MouseUpEventHandler += (sender, e) =>
            //{
            //    ESOnVideo.Current.Test(false);
            //};
#endif
            Button btnOnVersion = new Button()
            {
                Y = btnOnTitle.Bottom,
                Height = Application.GetRealWidth(25),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = Language.StringByID(StringId.VersionNumber) + " " + MainPage.VersionString,
            };
            bodyView.AddChidren(btnOnVersion);
            var lineView = new FrameLayout()
            {
                Y = Application.GetRealHeight(281),
                Height = Application.GetRealHeight(1),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            bodyView.AddChidren(lineView);
            #region 功能介绍
            var functionView = new ListCellView()
            {
                Y = lineView.Bottom,
            };
            bodyView.AddChidren(functionView);
            functionView.BtnTilte.TextID = StringId.FunctionIntroduced;
            Action functionAction = () =>
            {
                var mPage = new FunctionIntroductionPage();
                MainPage.BasePageView.AddChidren(mPage);
                mPage.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            functionView.GoAction = functionAction;
            #endregion
            #region 投诉
            var complaintsView = new ListCellView()
            {
                Y = functionView.Bottom,
            };
            bodyView.AddChidren(complaintsView);
            complaintsView.BtnTilte.TextID = StringId.Complaints;
            Action complaintsAction = () =>
            {
                var mPage = new ComplaintsPage();
                MainPage.BasePageView.AddChidren(mPage);
                mPage.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            complaintsView.GoAction = complaintsAction;
            #endregion
            #region 版本更新
            versionUpdateView = new ListCellView()
            {
                Y = complaintsView.Bottom,
            };
            bodyView.AddChidren(versionUpdateView);
            versionUpdateView.BtnTilte.TextID = StringId.VersionUpdate;
            Action versionUpdateAction = () =>
            {
                OpenUrl();
                //TestDDDDD();
                //HDLCommon.Current.CheckIfNeedForceUpdate();
            };
            versionUpdateView.GoAction = versionUpdateAction;
            #endregion
            CheckIfNeedUpdateAsync();
        }
        /// <summary>
        /// 判断是否需要调整新版本下载地址
        /// </summary>
        void OpenUrl()
        {
            if (!string.IsNullOrEmpty(newAppVersion))
            {
                HDLUtils.OpenUrl(newAppVersionUrl);
            }
            else
            {
                Utlis.ShowTip(Language.StringByID(StringId.IsLatestVersion));
            }
        }
        /// <summary>
        /// 检测是否需要更新
        /// Android等接口实现
        /// </summary>
        /// <returns></returns>
        void CheckIfNeedUpdateAsync(bool isTip = false)
        {
            new System.Threading.Thread(() =>
            {
                newAppVersion = CanUpdateAsync();
                Application.RunOnMainThread(() =>
                {
                    if (!string.IsNullOrEmpty(newAppVersion))
                    {
                        //发现新版本
                        versionUpdateView.BtnSubtitle.TextColor = CSS_Color.MainColor;
                        versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.DiscoverNewVersion) + "(" + newAppVersion + ")";
                    }
                    else
                    {
                        //已经是最新版本
                        versionUpdateView.BtnSubtitle.TextColor = CSS_Color.PromptingColor1;
                        versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.IsLatestVersion);
                    }
                });
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 检查版本
        /// </summary>
        /// <returns></returns>
        string CanUpdateAsync()
        {
#if __IOS__
            try
            {
                var versionResult = RequestHttpsiOSAppVersionAsync();
                if (versionResult == null || versionResult.Results == null)
                {
                    return "";
                }
                var results = Newtonsoft.Json.Linq.JArray.Parse(versionResult.Results.ToString());
                if (results[0] == null)
                {
                    return "";
                }
                var newVersion = results[0]["version"]?.ToString();
                //var updateContent = results[0]["releaseNotes"]?.ToString();
                if (newVersion.CompareTo(MainPage.VersionString) > 0)
                {
                    newAppVersionUrl = Constant.URL_APPSTORE;
                    return newVersion;
                }
                return "";
            }
            catch
            {
                return "";
            }
#else
            try
            {
                var versionResult = CheckAppVersion();
                if (versionResult == null)
                {
                    return "";
                }
                var newVersion = versionResult.version;
                if (newVersion.CompareTo(MainPage.VersionString) > 0)
                {
                    newAppVersionUrl = versionResult.androidUrl;
                    return newVersion;
                }
                return "";
            }
            catch (Exception ex)
            {
                return "";
            }
#endif
        }
#if __IOS__
        /// <summary>
        /// 获取iOS-APP版本信息
        /// </summary>
        /// <returns>The https app version async.</returns>
        ResultPack RequestHttpsiOSAppVersionAsync()
        {
            try
            {
                var webClient = new WebClient { };
                var result = webClient.DownloadData("https://itunes.apple.com/cn/lookup?id=1532353432");
                if (result == null)
                {
                    return null;
                }
                return Newtonsoft.Json.JsonConvert.DeserializeObject<ResultPack>(Encoding.UTF8.GetString(result));
            }
            catch
            {
                return null;
            }
        }
        //#else
#endif
        /// <summary>
        /// 检测新版本
        /// </summary>
        /// <returns>The https app version async.</returns>
        private AppVersionRes CheckAppVersion()
        {
            try
            {
                var result = new HttpServerRequest().CheckAppVersion();
                if (result.Code == StateCode.SUCCESS)
                {
                    if (result.Data == null)
                    {
                        return null;
                    }
                    var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<AppVersionRes>(result.Data.ToString());
                    return responeData;
                }
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        int updateType = 0;
        void TestDDDDD()
        {
            updateType = 1;
            UpdateDialogInfo forceUpdateInfo = new UpdateDialogInfo()
            {
                UpdateType = updateType,
                NewVersionUrl = Constant.URL_APPSTORE,
                NewVersion = "1.0.0925",
                ReasonStr = "1、首页全新改版设计,UI更清晰 \n2、修复BUG \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能 \n3、新增音箱功能"
            };
            HDLCommon.Current.ShowForceUpdateDialog(forceUpdateInfo);
        }
    }
    /// <summary>
    /// 苹果商店查询响应包格式
    /// </summary>
    [System.Serializable]
    public class ResultPack
    {
        public int ResultCount { get; set; }
        public object Results { get; set; }
    }
}