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
}
}