wxr
2024-04-17 9e92eed00fe1f98d9f41b3a0012bcc7914eb8dea
HDL_ON/Common/HDLCommon.cs
@@ -7,11 +7,11 @@
using HDL_ON.Entity;
using System.Threading;
using HDL_ON.DriverLayer;
namespace HDL_ON
{
    /// <summary>
    /// HDLCommon
    /// 暂时没用
    /// </summary>
    public class HDLCommon
    {
@@ -258,10 +258,12 @@
        {
            try
            {
                //Console.WriteLine($"接收到推送,,,,.{Newtonsoft.Json.JsonConvert.SerializeObject(jpushMessageInfo).ToString()}");
                //Extras为空不处理
                if (string.IsNullOrEmpty(jpushMessageInfo.Extras)) return;
                if (jpushMessageInfo.Extras.Contains(PushMessageType.OffLine.ToString()))
                if (jpushMessageInfo.Extras == (PushMessageType.OffLine.ToString()))
                {
                    CheckLogout();
                }
@@ -273,33 +275,63 @@
                    if (string.IsNullOrEmpty(jpushMessageInfo.messageType)) return;
                    //报警推送才弹窗提示(messageType包含Alarm关键字的)
                    if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString()))
                    if (jpushMessageInfo.messageType == (PushMessageType.Alarm.ToString()))
                    {
                        //报警推送弹窗提示
                        ShowAlarmPushMessage(jpushMessageInfo, true);
                    }
                    else if (jpushMessageInfo.messageType.Contains(PushMessageType.HDL_INTERPHONE.ToString()))
                    else if (jpushMessageInfo.messageType == (PushMessageType.HDL_INTERPHONE.ToString()))
                    {
                        if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
                        //字段兼容问题,只能直接取值了
                        var json = Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent);
                        try
                        //1.视对讲厂家类型
                        string interphoneTypeEnum = json["interphoneTypeEnum"].ToString();
                        if (string.IsNullOrEmpty(interphoneTypeEnum)) return;
                        ESVideoInfo eSVideoInfo = new ESVideoInfo();// GetESOnVideoJson(jpushMessageInfo.expantContent);
                        //2.根据可视对讲厂家类型,处理不同的数据
                        if (interphoneTypeEnum == InterphoneType.HDL.ToString())
                        {
                            var pushTime = json["pushTime"];
                            if (!string.IsNullOrEmpty(pushTime.ToString()))
                            try
                            {
                                var pushDateTime = Utlis.UnixToDateTimeMS(Convert.ToInt64(pushTime));
                                if (pushDateTime.AddSeconds(30) < DateTime.Now)
                                var pushTime = json["pushTime"];
                                if (pushTime == null)
                                {
                                    return;
                                }
                                if (!string.IsNullOrEmpty(pushTime.ToString()))
                                {
                                    var pushDateTime = Utlis.UnixToDateTimeMS(Convert.ToInt64(pushTime));
                                    if (pushDateTime.AddSeconds(30) < DateTime.Now)
                                    {
                                        return;
                                    }
                                }
                            }
                            catch { }
                            //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;
                        }
                        catch { }
                        //3.打开呼叫页面
                        if (eSVideoInfo == null) return;
                        ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, interphoneTypeEnum);
                    }
                    else if (jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString()))
                    else if (jpushMessageInfo.messageType == (PushMessageType.Prompt.ToString()))
                    {
                        ShowAlarmPushMessage(jpushMessageInfo, false);
                    }
@@ -310,7 +342,6 @@
                Utlis.WriteLine("catch: " + EX.ToString());
            }
        }
        /// <summary>
        /// 账号在别处登陆,被踢下线 跳转到登录页面
        /// 要在主线程调用
@@ -318,11 +349,24 @@
        /// </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 "13580507523":
                case "15626203746":
                case "18316672920":
                    return;
            }
@@ -332,7 +376,13 @@
            //账号在别处登陆,被踢下线 跳转到登录页面
            new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
            Logout();
            try
            {
                Logout();
            }catch (Exception ex)
            {
                MainPage.Log($"挤下线异常:{ex.Message}");
            }
        }
        /// <summary>
@@ -355,12 +405,18 @@
                    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__
                    //.清空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}");
                    //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)
@@ -373,6 +429,7 @@
                    {
                        if (waitPage != null)
                        {
                            waitPage.Hide();
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
@@ -420,9 +477,9 @@
                        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;
                        var sdm = new SiriKit.SceneDateManager();
                        sdm.RegionUrl = DB_ResidenceData.Instance.CurrentRegion.regionUrl;
                        sdm.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
#endif
                    }
                }
@@ -526,7 +583,7 @@
            if (internetStatus == 0)//没有网络连接 0
            {
                MainPage.InternetStatus = 0;
                DAL.Mqtt.MqttClient.InitState();
                //DAL.Mqtt.MqttClient.DisConnectRemote();//.InitState();
            }
            else if (internetStatus == 1)//3,4G的网络连接 1
            {
@@ -540,110 +597,6 @@
                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
                {
                    //先获取萤石云子账号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);
#else
                                //Android
                                //1.设置所需河东的token、域名地址
                                //2.设置萤石子账号的token
                                //3.打开摄像头设备列表页面
                                ((BaseActivity)Shared.Application.Activity).SetCamera(b =>
                                {
                                    if (b)
                                    {
                                        ((BaseActivity)Shared.Application.Activity).SetPermission(result =>
                                        {
                                            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
    }
}