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
|
{
|
/// <summary>
|
/// HDLCommon
|
/// 暂时没用
|
/// </summary>
|
public class HDLCommon
|
{
|
#region ■ 变量声明___________________________
|
/// <summary>
|
/// 通用方法
|
/// </summary>
|
private static HDLCommon m_Current = null;
|
/// <summary>
|
/// 通用方法
|
/// </summary>
|
public static HDLCommon Current
|
{
|
get
|
{
|
if (m_Current == null)
|
{
|
m_Current = new HDLCommon();
|
}
|
return m_Current;
|
}
|
}
|
#endregion
|
|
#region ■ Alter弹窗提示_______________________
|
/// <summary>
|
/// 弹窗提示
|
/// </summary>
|
/// <param name="mes"></param>
|
public void ShowAlert(string mes)
|
{
|
new Alert("", mes, Language.StringByID(StringId.Close)).Show();
|
}
|
|
/// <summary>
|
/// 弹窗提示
|
/// </summary>
|
/// <param name="mes">弹窗提示信息</param>
|
/// <param name="okAction">确认按钮事件</param>
|
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 检测更新
|
/// <summary>
|
/// 检测更新线程
|
/// </summary>
|
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<AppVersionRes>(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
|
{
|
|
}
|
|
});
|
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="jsonStr"></param>
|
/// <returns></returns>
|
public ReasonStrJson GetReasonStrJson(string jsonStr)
|
{
|
try
|
{
|
if (!string.IsNullOrEmpty(jsonStr))
|
{
|
return Newtonsoft.Json.JsonConvert.DeserializeObject<ReasonStrJson>(jsonStr);
|
}
|
return null;
|
}
|
catch
|
{
|
return null;
|
}
|
}
|
|
/// <summary>
|
/// 提示强制更新Dialog
|
/// 点击确认跳转浏览器
|
/// </summary>
|
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
|
|
/// <summary>
|
/// 恢复住宅
|
/// 2020-12-03 待测试未检测
|
/// </summary>
|
public void RestoreHomeBackup(string RegionID)
|
{
|
var isExist = FileUtils.ExistRegion(RegionID);
|
if (isExist)
|
{
|
//存在则恢复
|
string newRegionRootPath = FileUtils.CreateRegionBackup(RegionID);
|
FileUtils.RestoreRegionFiles(newRegionRootPath);
|
}
|
}
|
|
#region 推送处理
|
/// <summary>
|
/// 推送消息处理
|
/// </summary>
|
/// <param name="jpushMessageInfo"></param>
|
public void AdjustPushMessage(JPushMessageInfo jpushMessageInfo)
|
{
|
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
|
{
|
|
}
|
}
|
|
/// <summary>
|
/// 退出登录操作
|
/// </summary>
|
public void Logout()
|
{
|
try
|
{
|
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
|
|
}
|
}
|