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 { /// /// 关于页面 /// public class AboutOnPage : FrameLayout { /// /// /// FrameLayout bodyView; /// /// 版本更新ListCellView /// ListCellView versionUpdateView; /// /// 新版本的版本号,查询到新版本才赋值 /// string newAppVersion; /// /// 新版本的下载地址 /// iOS 默认为苹果商店地址 /// Android 云端返回地址 /// string newAppVersionUrl = ""; /// /// /// public AboutOnPage() { bodyView = this; } /// /// /// 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(); } /// /// 判断是否需要调整新版本下载地址 /// void OpenUrl() { if (!string.IsNullOrEmpty(newAppVersion)) { HDLUtils.OpenUrl(newAppVersionUrl); } else { Utlis.ShowTip(Language.StringByID(StringId.IsLatestVersion)); } } /// /// 检测是否需要更新 /// Android等接口实现 /// /// 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(); } /// /// 检查版本 /// /// 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__ /// /// 获取iOS-APP版本信息 /// /// The https app version async. 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(Encoding.UTF8.GetString(result)); } catch { return null; } } //#else #endif /// /// 检测新版本 /// /// The https app version async. 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(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); } } /// /// 苹果商店查询响应包格式 /// [System.Serializable] public class ResultPack { public int ResultCount { get; set; } public object Results { get; set; } } }