using System; using Shared; using HDL_ON; using HDL_ON.UI.CSS; using HDL_ON.DAL.Server; using HDL_ON.UI; using HDL_ON.Entity; namespace HDL_ON { /// /// HDLCommon /// 暂时没用 /// public class HDLCommon { #region ■ 变量声明___________________________ /// /// 通用方法 /// private static HDLCommon m_Current = null; /// /// 通用方法 /// public static HDLCommon Current { get { if (m_Current == null) { m_Current = new HDLCommon(); } return m_Current; } } #endregion #region ■ Alter弹窗提示_______________________ /// /// 弹窗提示 /// /// public void ShowAlert(string mes) { new Alert("", mes, Language.StringByID(StringId.Close)).Show(); } /// /// 弹窗提示 /// /// 弹窗提示信息 /// 确认按钮事件 public void ShowActionAlert(string mes, Action okAction) { Alert alert = new Alert("", mes, Language.StringByID(StringId.Cancel), Language.StringByID(StringId.Confirm)); alert.ResultEventHandler += (sender2, e2) => { if (e2) { okAction?.Invoke(); } }; alert.Show(); } #endregion #region ■ 通用Dialog_______________________ #endregion #region 检测更新 /// /// 检测更新线程 /// public void CheckIfNeedForceUpdate() { System.Threading.Tasks.Task.Run(() => { try { var revertObj = new HttpServerRequest().CheckAppVersion(); if (revertObj.Code == StateCode.SUCCESS) { if (revertObj.Data != null) { var appVersionRes = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.Data.ToString()); if (appVersionRes != null) { var mForceUpdateInfo = new UpdateDialogInfo() { UpdateType = appVersionRes.isEnforce ? 2 : 1, NewVersion = appVersionRes.version, NewVersionUrl = appVersionRes.androidUrl }; #if __IOS__ mForceUpdateInfo.NewVersionUrl = appVersionRes.iosUrl; #endif //解析更新内容详情 var reasonStrJson = GetReasonStrJson(appVersionRes.updateDescription); if (reasonStrJson != null) { if (Language.CurrentLanguage == "Chinese") { mForceUpdateInfo.ReasonStr = reasonStrJson.Chinese; } else { mForceUpdateInfo.ReasonStr = reasonStrJson.English; } } Application.RunOnMainThread(() => { ShowForceUpdateDialog(mForceUpdateInfo); }); } } } else { Utlis.WriteLine("请求失败"); } } catch (Exception ex) { //Shared.Utlis.WriteLine (ex.ToString ()); } finally { } }); } /// /// /// /// /// public ReasonStrJson GetReasonStrJson(string jsonStr) { try { if (!string.IsNullOrEmpty(jsonStr)) { return Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr); } return null; } catch { return null; } } /// /// 提示强制更新Dialog /// 点击确认跳转浏览器 /// public void ShowForceUpdateDialog(UpdateDialogInfo mUpdateDialogInfo) { // 1.1 没有更新 返回 if (mUpdateDialogInfo.UpdateType == 0) return; // 1.2 有新版本但是忽略过 返回 if (mUpdateDialogInfo.UpdateType == 1 && (UserInfo.Current.IgnoreUpdateVersion == mUpdateDialogInfo.NewVersion)) return; // 2.1 有新版本没有忽略过 提示更新 if (mUpdateDialogInfo.UpdateType == 1) { Action okAction = () => { if (string.IsNullOrEmpty(mUpdateDialogInfo.NewVersionUrl)) return; HDLUtils.OpenUrl(mUpdateDialogInfo.NewVersionUrl); }; Action cancelAction = () => { UserInfo.Current.IgnoreUpdateVersion = mUpdateDialogInfo.NewVersion; UserInfo.Current.SaveUserInfo(); }; //1提示更新 var dialog = new UpdateTipDialog(); var tipStr = Language.StringByID(StringId.VersionNumber) + mUpdateDialogInfo.NewVersion; dialog.ShowUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mUpdateDialogInfo.ReasonStr, okAction, cancelAction); } else if (mUpdateDialogInfo.UpdateType == 2) //2.2 需要强制更新 { //2强制更新 //"1.发现新版本App,当前版本已停用,马上更新!\n2.请下载和安装新版本!....." Action okAction = () => { if (string.IsNullOrEmpty(mUpdateDialogInfo.NewVersionUrl)) { Utlis.ShowTip(Language.StringByID(StringId.DataExceptionPleaseTryAgain)); return; }; HDLUtils.OpenUrl(mUpdateDialogInfo.NewVersionUrl); }; //1提示更新 var dialog = new UpdateTipDialog(); var tipStr = Language.StringByID(StringId.VersionNumber) + mUpdateDialogInfo.NewVersion; dialog.ShowForcedUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mUpdateDialogInfo.ReasonStr, okAction); } else //3. 只需提示 { //3提示通知 Action okAction = () => { }; var dialog = new UpdateTipDialog(); dialog.ShowTipDialog(Language.StringByID(StringId.Tip), mUpdateDialogInfo.ReasonStr, okAction); } } #endregion /// /// 恢复住宅 /// 2020-12-03 待测试未检测 /// public void RestoreHomeBackup(string RegionID) { var isExist = FileUtils.ExistRegion(RegionID); if (isExist) { //存在则恢复 string newRegionRootPath = FileUtils.CreateRegionBackup(RegionID); FileUtils.RestoreRegionFiles(newRegionRootPath); } } #region 推送处理 /// /// 推送消息处理 /// /// public void AdjustPushMessage(JPushMessageInfo jpushMessageInfo) { #if DEBUG return; #endif try { if (jpushMessageInfo.Extras != null && jpushMessageInfo.Extras.Contains("OffLine")) { Shared.Application.RunOnMainThread(() => { //账号在别处登陆,被踢下线 跳转到登录页面 new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show(); //2020-12-04 待增加退出登录操作 Logout(); }); return; } else { Shared.Application.RunOnMainThread(() => { new Alert(jpushMessageInfo.Title, jpushMessageInfo.Content, Language.StringByID(StringId.Close)).Show(); }); return; } } catch { } } /// /// 退出登录操作 /// public void Logout() { try { //未登录不用处理 if (!UserInfo.Current.IsLogin) return; Shared.Application.RunOnMainThread(() => { #region 保存本地数据至文件夹 string oldRegionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID.ToString()); new System.Threading.Thread(() => { try { var backuplist = FileUtils.ReadFiles(); FileUtils.DeleteRegionFiles(oldRegionRootPath); //移动文件 foreach (var fileName in backuplist) { System.IO.FileInfo fileInfo = new System.IO.FileInfo(FileUtils.RootPath + fileName); if (fileInfo.Exists) { fileInfo.MoveTo(oldRegionRootPath + fileName); MainPage.Log("move file : " + fileName); } } } catch (Exception ex) { MainPage.Log($"xxx:{ex.Message}"); } finally { FileUtils.DeleteAllFile(); } }).Start(); #endregion ////2.注销推送 new HttpServerRequest().SignOutPush(); //3.跳转登录页面 UserInfo.Current.LastTime = DateTime.MinValue; UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//重置用户头像 UserInfo.Current.SaveUserInfo(); MainPage.GoLoginPage(UserInfo.Current); DB_ResidenceData.residenceData.EixtAccount(); }); } catch (Exception ex) { MainPage.Log($"xxx:{ex.Message}"); } } #endregion } }