wxr
2023-09-26 61513acf37a1b97e0b1cf5342ff459c3c6fe83b4
OnPro/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
@@ -28,6 +28,10 @@
        /// Android 云端返回地址
        /// </summary>
        string newAppVersionUrl = "";
        /// <summary>
        /// 版本更新ListCellView
        /// </summary>
        ListCellView versionUpdateView;
        /// <summary>
        /// 
@@ -93,11 +97,32 @@
            };
            bodyView.AddChidren(lineView);
            #region 版本更新
            versionUpdateView = new ListCellView()
            {
                Y = lineView.Bottom,
            };
#if __ANDROID__
            bodyView.AddChidren(versionUpdateView);
            CheckIfNeedUpdateAsync(false);
#endif
            versionUpdateView.BtnTilte.TextID = StringId.VersionUpdate;
            Action versionUpdateAction = () =>
            {
                OpenUrl();
            };
            versionUpdateView.GoAction = versionUpdateAction;
            #endregion
            #region 软件服务协议
            var serviceAgreementView = new ListCellView()
            {
#if __ANDROID__
                Y = versionUpdateView.Bottom,
#else
                Y = lineView.Bottom,
#endif
            };
            bodyView.AddChidren(serviceAgreementView);
            serviceAgreementView.BtnTilte.TextID = StringId.UserAgreement;
@@ -107,7 +132,7 @@
                new WebViewDialog().LoadPageWithdrawalConsent(titleStr, url);
            };
            serviceAgreementView.GoAction = serviceAgreementAction;
            #endregion
#endregion
            #region 用户信息保护协议
            var privacyPolicyView = new ListCellView()
@@ -143,5 +168,89 @@
            }
        }
        /// <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()
        {
            try
            {
                var versionResult = CheckAppVersion();
                if (versionResult == null)
                {
                    return "";
                }
                var newVersion = versionResult.version;
                if (newVersion.CompareTo(MainPage.VersionString) > 0)
                {
                    newAppVersionUrl = versionResult.packageUrl;
                    return newVersion;
                }
                return "";
            }
            catch (Exception ex)
            {
                return "";
            }
        }
        /// <summary>
        /// 检测新版本
        /// </summary>
        /// <returns>The https app version async.</returns>
        private AppVersionResNew CheckAppVersion()
        {
            try
            {
                var result = new HttpServerRequest().CheckAppVersion();
                if (result.Code == StateCode.SUCCESS)
                {
                    if (result.Data == null)
                    {
                        return null;
                    }
                    var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<AppVersionResNew>(result.Data.ToString());
                    return responeData;
                }
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
    }
}