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;
|
using System.Threading;
|
using HDL_ON.DriverLayer;
|
namespace HDL_ON
|
{
|
/// <summary>
|
/// HDLCommon
|
/// 暂时没用
|
/// </summary>
|
public class HDLCommon
|
{
|
/// <summary>
|
/// 收到推送Action事件
|
/// </summary>
|
public static Action GetPushMessageAction;
|
|
#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<AppVersionResNew>(revertObj.Data.ToString());
|
if (appVersionRes != null)
|
{
|
|
var mForceUpdateInfo = new UpdateDialogInfo()
|
{
|
UpdateType = appVersionRes.isEnforce ? 2 : 1,
|
NewVersion = appVersionRes.version,
|
NewVersionUrl = appVersionRes.packageUrl
|
};
|
#if __IOS__
|
mForceUpdateInfo.NewVersionUrl = appVersionRes.packageUrl;
|
#endif
|
//解析更新内容详情
|
//var reasonStrJson = GetReasonStrJson(appVersionRes.remark);
|
//if (reasonStrJson != null)
|
//{
|
// if (Language.CurrentLanguage == "Chinese")
|
// {
|
// mForceUpdateInfo.ReasonStr = reasonStrJson.Chinese;
|
// }
|
// else
|
// {
|
// mForceUpdateInfo.ReasonStr = reasonStrJson.English;
|
// }
|
//}
|
mForceUpdateInfo.ReasonStr = appVersionRes.remark;
|
|
if (appVersionRes.version != MainPage.VersionString)
|
{
|
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 && (OnAppConfig.Instance.IgnoreUpdateVersion == mUpdateDialogInfo.NewVersion)) return;
|
// 2.1 有新版本没有忽略过 提示更新
|
if (mUpdateDialogInfo.UpdateType == 1)
|
{
|
Action okAction = () =>
|
{
|
if (string.IsNullOrEmpty(mUpdateDialogInfo.NewVersionUrl)) return;
|
|
HDLUtils.OpenUrl(mUpdateDialogInfo.NewVersionUrl);
|
};
|
|
Action cancelAction = () =>
|
{
|
OnAppConfig.Instance.IgnoreUpdateVersion = mUpdateDialogInfo.NewVersion;
|
OnAppConfig.Instance.SaveConfig();
|
};
|
|
//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>
|
/// 推送消息处理
|
/// 注意:Android要在主线程(UI线程)执行
|
/// </summary>
|
/// <param name="jpushMessageInfo"></param>
|
public void AdjustPushMessage(JPushMessageInfo jpushMessageInfo)
|
{
|
try
|
{
|
MainPage.Log($"接收到推送");
|
|
//Extras为空不处理
|
if (string.IsNullOrEmpty(jpushMessageInfo.Extras)) return;
|
|
if (jpushMessageInfo.Extras.Contains(PushMessageType.OffLine.ToString()))
|
{
|
CheckLogout();
|
}
|
else
|
{
|
GetPushMessageAction?.Invoke();
|
|
//messageType为空不处理
|
if (string.IsNullOrEmpty(jpushMessageInfo.messageType)) return;
|
|
//报警推送才弹窗提示(messageType包含Alarm关键字的)
|
if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString()))
|
{
|
//报警推送弹窗提示
|
ShowAlarmPushMessage(jpushMessageInfo, true);
|
//萤石门锁推送
|
HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
|
}
|
else if (jpushMessageInfo.messageType.Contains(PushMessageType.FLCall.ToString()))
|
{
|
if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
|
|
ESVideoInfo eSVideoInfo = GetESOnVideoJson(jpushMessageInfo.expantContent);
|
|
if (eSVideoInfo == null) return;
|
|
if (string.IsNullOrEmpty(eSVideoInfo.uuid)) return;
|
|
if (eSVideoInfo.uuid.Contains(","))
|
{
|
var uuid = eSVideoInfo.uuid.Split(',');
|
eSVideoInfo.ESVideoUUID = uuid[0];
|
}
|
else
|
{
|
eSVideoInfo.ESVideoUUID = eSVideoInfo.uuid;
|
}
|
|
ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, InterphoneType.FLVI.ToString());
|
|
}
|
else if (jpushMessageInfo.messageType.Contains(PushMessageType.HDL_INTERPHONE.ToString()))
|
{
|
|
if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
|
|
//字段兼容问题,只能直接取值了
|
var json = Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent);
|
try
|
{
|
var pushTime = json["pushTime"];
|
if (!string.IsNullOrEmpty(pushTime.ToString()))
|
{
|
var pushDateTime = Utlis.UnixToDateTimeMS(Convert.ToInt64(pushTime));
|
if (pushDateTime.AddSeconds(30) < DateTime.Now)
|
{
|
return;
|
}
|
}
|
}
|
catch { }
|
|
//1.视对讲厂家类型
|
string interphoneTypeEnum = json["interphoneTypeEnum"].ToString();
|
if (string.IsNullOrEmpty(interphoneTypeEnum)) return;
|
ESVideoInfo eSVideoInfo = new ESVideoInfo();// GetESOnVideoJson(jpushMessageInfo.expantContent);
|
//2.根据可视对讲厂家类型,处理不同的数据
|
if (interphoneTypeEnum == InterphoneType.IMOUVISIAL.ToString())
|
{
|
//大华乐橙
|
eSVideoInfo.callId = json["callId"].ToString();
|
//eSVideoInfo.Lc_AccessToken = UI.UI2.PersonalCenter.PirDevice.PirSend.LcSubAccessToken;//json["subAccountToken"].ToString();//
|
eSVideoInfo.Lc_AccessToken = json["subAccountToken"].ToString();//2021-05-13 目前云端还没拿到Lc_AccessToken,目前没办法正常使用
|
eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
|
eSVideoInfo.Lc_Location = OnAppConfig.Instance.RequestHttpsHost.Contains("China") ? 0 : 1;
|
eSVideoInfo.Lc_PlayToken = json["token"].ToString();
|
//eSVideoInfo.Lc_Psk = json["cname"].ToString();
|
eSVideoInfo.Lc_Psk = json["psk"].ToString();//2021-10-15 PSK字段不能取cname
|
}
|
else if (interphoneTypeEnum == InterphoneType.EZVIZ.ToString())
|
{
|
//萤石猫眼
|
eSVideoInfo.Lc_AccessToken = json["subToken"].ToString();//"子账号token
|
eSVideoInfo.DeviceSerial = json["devSerial"].ToString();//设备序列号
|
eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
|
}
|
else if (interphoneTypeEnum == InterphoneType.HDL.ToString())
|
{
|
//HDL Linphone 狄耐克
|
eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
|
eSVideoInfo.callId = json["callId"].ToString();
|
eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
|
eSVideoInfo.DeviceName = json["deviceName"].ToString();
|
eSVideoInfo.deviceSipAccount = json["deviceSipAccount"].ToString();
|
eSVideoInfo.spk = json["spk"].ToString();
|
|
//ShowAlert("狄耐克门口机呼叫");
|
//打开呼叫页面
|
HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo, InterphoneType.HDL.ToString());
|
return;
|
}
|
else if (interphoneTypeEnum == InterphoneType.FREEVIEW.ToString())
|
{
|
//全视通 Linphone 狄耐克
|
eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
|
eSVideoInfo.callId = json["callId"].ToString();
|
eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
|
eSVideoInfo.DeviceName = json["deviceName"].ToString();
|
eSVideoInfo.deviceSipAccount = json["deviceSipAccount"].ToString();
|
eSVideoInfo.spk = json["spk"].ToString();
|
|
//ShowAlert("狄耐克门口机呼叫");
|
//打开呼叫页面
|
HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo, InterphoneType.FREEVIEW.ToString());
|
return;
|
}
|
|
//3.打开呼叫页面
|
if (eSVideoInfo == null) return;
|
ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, interphoneTypeEnum);
|
|
}
|
else if (jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString()))
|
{
|
ShowAlarmPushMessage(jpushMessageInfo, false);
|
//萤石门锁推送
|
HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
|
}
|
else if (jpushMessageInfo.messageType.Contains(PushMessageType.DOOR_BELL.ToString()))
|
{
|
//萤石门锁推送
|
HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo);
|
}
|
|
|
}
|
}
|
catch (Exception EX)
|
{
|
Utlis.WriteLine("catch: " + EX.ToString());
|
}
|
}
|
//{"code":0,"data":{"list":[{"createTime":"1625798305115","modifyTime":"1625798305115","region":"100000000000000001","id":"1413326644794294273","alarmId":"20210709103818-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709103818-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:38:17","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{"createTime":"1625798057197","modifyTime":"1625798057197","region":"100000000000000001","id":"1413325604946640898","alarmId":"20210709103413-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709103413-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:34:12","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625797973320","modifyTime":"1625797973320","region":"100000000000000001","id":"1413325253141004289","alarmId":"20210709103236-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709103236-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:32:31","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625797782136","modifyTime":"1625797782136","region":"100000000000000001","id":"1413324451261382658","alarmId":"20210709102937-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709102937-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:29:37","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625797668771","modifyTime":"1625797668771","region":"100000000000000001","id":"1413323975769915394","alarmId":"20210709102743-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709102743-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:27:42","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625797539846","modifyTime":"1625797539846","region":"100000000000000001","id":"1413323435023466498","alarmId":"20210709102534-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709102534-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:25:34","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625797530627","modifyTime":"1625797530627","region":"100000000000000001","id":"1413323396351983618","alarmId":"20210709102525-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709102525-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:25:25","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625796028089","modifyTime":"1625796028089","region":"100000000000000001","id":"1413317094255034369","alarmId":"20210709100024-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709100024-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T10:00:23","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625795974558","modifyTime":"1625795974558","region":"100000000000000001","id":"1413316869729746946","alarmId":"20210709095931-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709095931-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T09:59:31","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"},{ "createTime":"1625795966933","modifyTime":"1625795966933","region":"100000000000000001","id":"1413316837748178946","alarmId":"20210709095923-F41014762-1-10000","channelNo":1,"deviceSerial":"F41014762","alarmName":"人体感应事件","alarmPicUrl":"https://i.ys7.com/streamer/alarm/url/get?fileId=20210709095923-F41014762-1-10000-2-1&deviceSerialNo=F41014762&cn=1&isEncrypted=0&isCloudStored=0&ct=1&lc=7&bn=1_hikalarm&isDevVideo=0","alarmTime":"2021-07-09T09:59:22","homeId":"1396717478877241345","alarmType":"pir","isChecked":0,"isEncrypt":0,"deleted":0,"tenantId":"20"}],"totalCount":"13","totalPage":"2","pageNo":"1","pageSize":"10"},"timestamp":"1625807415164","isSuccess":true}
|
//{"platform":"1","timestamp":"1625805660249","appKey":"HDL-HOME-APP-TEST","sign":"02e433c40485b30451ebdc5ca3cd959c","deviceSerial":"F41014762","homeId":"1396717478877241345"}
|
/// <summary>
|
/// 解析丰林可视对讲推送数据
|
/// </summary>
|
/// <param name="jsonStr"></param>
|
/// <returns></returns>
|
ESVideoInfo GetESOnVideoJson(string jsonStr)
|
{
|
try
|
{
|
if (!string.IsNullOrEmpty(jsonStr))
|
{
|
return Newtonsoft.Json.JsonConvert.DeserializeObject<ESVideoInfo>(jsonStr);
|
}
|
return null;
|
}
|
catch
|
{
|
return null;
|
}
|
}
|
|
/// <summary>
|
/// 账号在别处登陆,被踢下线 跳转到登录页面
|
/// 要在主线程调用
|
/// 退出登录操作
|
/// </summary>
|
public void CheckLogout()
|
{
|
#if __IOS__
|
try{
|
HDL_ON_iOS.AppDelegate.rootViewController.PopToRootViewController(false);
|
}catch(Exception ex){
|
MainPage.Log($"回到跟类失败:{ex.Message}");
|
}
|
#else
|
//Application.Activity.StartActivity()
|
#endif
|
|
//测试账号,不挤下线
|
switch (UserInfo.Current.AccountString)
|
{
|
case "464027401@qq.com":
|
case "15626203746":
|
return;
|
}
|
|
//未登录不用处理
|
if (!UserInfo.Current.IsLogin) return;
|
|
//账号在别处登陆,被踢下线 跳转到登录页面
|
new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
|
|
try
|
{
|
Logout();
|
}catch (Exception ex)
|
{
|
MainPage.Log($"挤下线异常:{ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 退出登录操作
|
/// </summary>
|
public void Logout()
|
{
|
//加载Loading效果
|
var waitPage = new Loading();
|
MainPage.BaseView.AddChidren(waitPage);
|
waitPage.Start(Language.StringByID(StringId.PleaseWait));
|
|
new Thread(() =>
|
{
|
try
|
{
|
//2.注销推送
|
new HttpServerRequest().SignOutPush();
|
//3.跳转登录页面
|
UserInfo.Current.LastTime = DateTime.MinValue;
|
UserInfo.Current.SaveUserInfo();
|
DB_ResidenceData.Instance.EixtAccount();
|
MainPage.Log("退出账号清空数据");
|
//4.注销HDLSIP账号登录 2021-08-20
|
HDLLinphone.Current.LogoutAllAccount();
|
MainPage.Log("注销HDLSIP账号登录");
|
|
#if __IOS__
|
//5.全视通登出
|
Shared.IOS.HDLFVSDK.Video.Logout();
|
//6.清空Siri共享数据信息
|
new Other.SkipControl().SetData(false, "", "", "", "");
|
var sDM = new SiriKit.SceneDateManager();
|
Console.WriteLine($"IsLogin:{sDM.IsLgoin};accessToken:{sDM.AccessToken};refreshToken:{sDM.RefreshToken};RegionUrl:{sDM.RegionUrl};HomeId:{sDM.HomeId}");
|
#endif
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"xxx:{ex.Message}");
|
}
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (waitPage != null)
|
{
|
waitPage.Hide();
|
waitPage.RemoveFromParent();
|
waitPage = null;
|
}
|
MainPage.GoLoginPage(UserInfo.Current);
|
});
|
}
|
}).Start();
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
ConfirmDialog alarmPushConfirmDialog;
|
/// <summary>
|
/// 报警推送弹窗提示,点击查看跳转信息中心
|
/// </summary>
|
/// <param name="jpushMessageInfo"></param>
|
/// <param name="isAlarm">是否是报警信息,(加载的弹窗颜色不一样)</param>
|
public void ShowAlarmPushMessage(JPushMessageInfo jpushMessageInfo, bool isAlarm)
|
{
|
//没登录不处理
|
if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
|
{
|
return;
|
}
|
|
//跳转信息中心页面
|
Action goAction = () =>
|
{
|
//查看对应住宅的信息,要切换到对应住宅
|
if (jpushMessageInfo.HomeId != DB_ResidenceData.Instance.CurrentRegion.id)
|
{
|
var homeTemp = UserInfo.Current.regionList.Find((obj) => jpushMessageInfo.HomeId == obj.id);
|
if (homeTemp != null)
|
{
|
DB_ResidenceData.Instance.CurrentRegion = homeTemp;
|
DB_ResidenceData.Instance.SaveResidenceData();
|
DB_ResidenceData.Instance.EixtAccount();
|
//刷新住宅数据
|
Common.ApiUtlis.Ins.DownloadData();
|
while (MainPage.BasePageView.ChildrenCount > 1)
|
{
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 2;
|
}
|
MainPage.CurPageIndex = 9999;
|
MainPage.UserBasePage.ChooseCollection();
|
#if __IOS__
|
var sdm = new SiriKit.SceneDateManager();
|
sdm.RegionUrl = DB_ResidenceData.Instance.CurrentRegion.regionUrl;
|
sdm.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
|
#endif
|
}
|
}
|
//Dialog
|
alarmPushConfirmDialog = null;
|
Action backAction = () =>
|
{
|
|
};
|
while (MainPage.BasePageView.ChildrenCount > 1)
|
{
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 2;
|
}
|
var skipPage = new MessageCenterPage();
|
MainPage.BasePageView.AddChidren(skipPage);
|
skipPage.LoadPage(backAction);
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
|
//取消事件
|
Action cancelAction = () =>
|
{
|
alarmPushConfirmDialog = null;
|
};
|
|
|
//防止多次弹窗处理
|
if (alarmPushConfirmDialog == null)
|
{
|
alarmPushConfirmDialog = new ConfirmDialog(isAlarm);
|
alarmPushConfirmDialog.ShowDialog(Language.StringByID(StringId.Tip), jpushMessageInfo.Content, goAction, cancelAction, StringId.Cancel, StringId.LookOver);
|
}
|
else
|
{
|
alarmPushConfirmDialog.RefreshDialog(Language.StringByID(StringId.Tip), jpushMessageInfo.Content, goAction, cancelAction, StringId.Cancel, StringId.LookOver);
|
|
}
|
|
}
|
|
#endregion
|
|
#region ■ 常用方法_______________________
|
/// <summary>
|
/// 设置下划线按钮状态
|
/// 统一封装设置方法
|
/// </summary>
|
/// <param name="button">下划线按钮</param>
|
/// <param name="bottomLineType">状态</param>
|
public void BottomLineShowType(Button button, BottomLineType bottomLineType)
|
{
|
switch (bottomLineType)
|
{
|
case BottomLineType.GotFocus:
|
button.BackgroundColor = CSS_Color.MainColor;
|
button.Height = Application.GetRealHeight(2);
|
break;
|
case BottomLineType.Error:
|
button.BackgroundColor = CSS_Color.AuxiliaryColor2;
|
button.Height = Application.GetRealHeight(2);
|
break;
|
case BottomLineType.Normal:
|
button.BackgroundColor = CSS_Color.DividingLineColor;
|
button.Height = Application.GetRealHeight(1);
|
break;
|
default:
|
button.BackgroundColor = CSS_Color.DividingLineColor;
|
button.Height = Application.GetRealHeight(1);
|
break;
|
}
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="userName"></param>
|
/// <returns></returns>
|
public string GetUserName(string userName)
|
{
|
return string.IsNullOrEmpty(userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) : userName;
|
}
|
|
|
/// <summary>
|
/// 监听网络变化后处理事件
|
/// 刷新网络状态
|
/// </summary>
|
/// <param name="internetStatus">网络变化</param>
|
/// <param name="IsEnterBackground">是否进入了后台</param>
|
public void UpdateInternetStatus(int internetStatus, bool IsEnterBackground = false)
|
{
|
MainPage.Log($"网络状态变化,当前网络:{internetStatus} 是否后台:{IsEnterBackground.ToString()}");
|
MainPage.LinkHdlMqttCount = 0;
|
//网络状态变化 重置网关状态重新搜索
|
Control.Ins.GatewayOnline_Cloud = false;
|
Control.Ins.GatewayOnline_Local = false;
|
|
DAL.Mqtt.MqttClient.DisConnectRemote("UpdateInternetStatus", false);
|
|
if (internetStatus == 0)//没有网络连接 0
|
{
|
MainPage.InternetStatus = 0;
|
DAL.Mqtt.MqttClient.InitState();
|
}
|
else if (internetStatus == 1)//3,4G的网络连接 1
|
{
|
MainPage.InternetStatus = 1;
|
Control.Ins.SearchLoaclGateway();
|
|
}
|
else if (internetStatus == 2)//WiFi网络
|
{
|
MainPage.InternetStatus = 2;
|
Control.Ins.SearchLoaclGateway();
|
}
|
}
|
#endregion
|
|
#region 跳转打开萤石云方法
|
|
/// <summary>
|
/// 获取子账号token并跳转设备列表页面
|
/// </summary>
|
/// <param name="bodyView"></param>
|
public void Go2EZvizMonitor(FrameLayout bodyView)
|
{
|
var waitPage = new Loading();
|
bodyView.AddChidren(waitPage);
|
waitPage.Start(Language.StringByID(StringId.PleaseWait));
|
|
new Thread(() =>
|
{
|
try
|
{
|
var list = UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockLockModelsList();
|
//先获取萤石云子账号token
|
var result = new HttpServerRequest().EZGetChildToken();
|
if (result.Code == StateCode.SUCCESS)
|
{
|
var ezChildAccessToken = result.Data.ToString();
|
|
//var ezChildAccessToken = Newtonsoft.Json.JsonConvert.DeserializeObject<EZChildAccessToken>(result.Data.ToString());
|
Application.RunOnMainThread(() =>
|
{
|
if (!string.IsNullOrEmpty(ezChildAccessToken))
|
{
|
|
#if __IOS__
|
|
//iOS
|
//初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
|
EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
|
//1.设置所需河东的AccessToken和RefreshToken、域名地址
|
EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken);
|
EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, DB_ResidenceData.Instance.CurrentRegion.id);
|
//2.设置萤石子账号的AccessToken到SDK
|
EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(ezChildAccessToken);
|
|
//////3.打开摄像头设备列表页面
|
//EZSDK.IOS.EZSDK.SharedInstance().Go2EZvizMonitor();
|
|
//EZSDK.IOS.EZDeviceInfo info = new EZSDK.IOS.EZDeviceInfo();
|
//info.de
|
//EZSDK.IOS.EZSDK.Play(info);
|
|
//2023年03月29日13:08:35 修改
|
Foundation.NSObject[] nSObject = new Foundation.NSObject[list.Count];
|
for (int i = 0; i < list.Count; i++)
|
{
|
string strValue = list[i];
|
nSObject[i] = new Foundation.NSString(strValue);
|
}
|
EZSDK.IOS.EZSDK.SharedInstance().ToEZDeviceListViewWithFilterTypes(nSObject);
|
|
|
|
#else
|
//Android
|
//1.设置所需河东的token、域名地址
|
//2.设置萤石子账号的token
|
//3.打开摄像头设备列表页面
|
((BaseActivity)Shared.Application.Activity).SetCamera(b =>
|
{
|
if (b)
|
{
|
((BaseActivity)Shared.Application.Activity).SetPermission(result =>
|
{
|
//2023年03月29日13:08:35 修改
|
Com.Videogo.Hdl.HDLEzvizSdk.Instance.Init(Application.Activity.Application, ezChildAccessToken, UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken, OnAppConfig.Instance.RequestHttpsHost, "1aa98a90489b4838b966b57018b4b04b", 1, DB_ResidenceData.Instance.CurrentRegion.id);
|
Com.Videogo.Hdl.HDLEzvizSdk.Instance.JumpToCameraListActivity(Shared.Application.Activity, list);
|
//if (result)
|
//{
|
// Android.Content.Intent intent = new Android.Content.Intent();
|
// var bundle = new Android.OS.Bundle();
|
// //传递name参数为tinyphp
|
// bundle.PutString("EzChildAccessToken", ezChildAccessToken);
|
// bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString);
|
// bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost);
|
// bundle.PutString("EzvizAppKey", "1aa98a90489b4838b966b57018b4b04b");
|
// bundle.PutInt("Platform", 1);
|
// bundle.PutString("HomeId", DB_ResidenceData.Instance.CurrentRegion.id);
|
// intent.PutExtras(bundle);
|
// intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity"));
|
// Shared.Application.Activity.StartActivity(intent);
|
//}
|
}, "android.permission.RECORD_AUDIO");
|
|
}
|
});
|
#endif
|
|
|
}
|
|
});
|
}
|
else
|
{
|
IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (waitPage != null)
|
{
|
waitPage.RemoveFromParent();
|
waitPage = null;
|
}
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
#endregion
|
}
|
}
|