wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/Common/HDLCommon.cs
@@ -248,44 +248,106 @@
        #region ■ 推送处理_______________________
        /// <summary>
        /// 推送消息处理
        /// 注意:Android要在主线程(UI线程)执行
        /// </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();
                        //退出登录操作
                        CheckLogout();
                //Extras为空不处理
                if (string.IsNullOrEmpty(jpushMessageInfo.Extras)) return;
                    });
                    return;
                if (jpushMessageInfo.Extras.Contains(PushMessageType.OffLine.ToString()))
                {
                    CheckLogout();
                }
                else
                {
                    Shared.Application.RunOnMainThread(() =>
                    GetPushMessageAction?.Invoke();
                    //messageType为空不处理
                    if (string.IsNullOrEmpty(jpushMessageInfo.messageType)) return;
                    //报警推送才弹窗提示(messageType包含Alarm关键字的)
                    if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString()))
                    {
                        GetPushMessageAction?.Invoke();
                        //报警推送才弹窗提示(messageType包含Alarm关键字的)
                        if (jpushMessageInfo.messageType != null && jpushMessageInfo.messageType.Contains("Alarm"))
                        //报警推送弹窗提示
                        ShowAlarmPushMessage(jpushMessageInfo,true);
                    }
                    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(","))
                        {
                            //报警推送弹窗提示
                            ShowAlarmPushMessage(jpushMessageInfo);
                            //new Alert(jpushMessageInfo.Title, jpushMessageInfo.Content, Language.StringByID(StringId.Close)).Show();
                            var uuid = eSVideoInfo.uuid.Split(',');
                            eSVideoInfo.ESVideoUUID = uuid[0];
                        }
                        else
                        {
                            eSVideoInfo.ESVideoUUID = eSVideoInfo.uuid;
                        }
                    });
                    return;
                        ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, "FLVI");
                    }
                    else if (jpushMessageInfo.messageType.Contains(PushMessageType.HDL_INTERPHONE.ToString()))
                    {
                        if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return;
                        //字段兼容问题,只能直接取值了
                        var json= Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent);
                        ESVideoInfo eSVideoInfo = new ESVideoInfo();// GetESOnVideoJson(jpushMessageInfo.expantContent);
                        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();
                        if (eSVideoInfo == null) return;
                        ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, "IMOUVISIAL");
                    }
                    else if(jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString()))
                    {
                        ShowAlarmPushMessage(jpushMessageInfo, false);
                    }
                }
            }
            catch(Exception EX)
            {
                Utlis.WriteLine("catch: " + EX.ToString());
            }
        }
        /// <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;
            }
        }
@@ -311,6 +373,8 @@
                case "13602944661":
                case "18778381374":
                case "18316672920":
                case "15626203746":
                case "551775569@qq.com":
                    return;
            }
@@ -371,7 +435,8 @@
        /// 报警推送弹窗提示,点击查看跳转信息中心
        /// </summary>
        /// <param name="jpushMessageInfo"></param>
        public void ShowAlarmPushMessage(JPushMessageInfo jpushMessageInfo)
        /// <param name="isAlarm">是否是报警信息,(加载的弹窗颜色不一样)</param>
        public void ShowAlarmPushMessage(JPushMessageInfo jpushMessageInfo,bool isAlarm)
        {
            //没登录不处理
            if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
@@ -382,6 +447,25 @@
            //跳转信息中心页面
            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();
                    }
                }
                //Dialog
                alarmPushConfirmDialog = null;
                Action backAction = () =>
@@ -403,7 +487,7 @@
            //防止多次弹窗处理
            if (alarmPushConfirmDialog == null)
            {
                alarmPushConfirmDialog = new ConfirmDialog();
                alarmPushConfirmDialog = new ConfirmDialog(isAlarm);
                alarmPushConfirmDialog.ShowDialog(Language.StringByID(StringId.Tip), jpushMessageInfo.Content, goAction, cancelAction, StringId.Cancel, StringId.LookOver);
            }
            else
@@ -518,7 +602,8 @@
                            {
#if __IOS__
                                //iOS
                                //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
                                EZSDK.IOS.EZSDK.InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
                                //1.设置所需河东的AccessToken和RefreshToken、域名地址
                                EZSDK.IOS.EZSDK.SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken);
                                EZSDK.IOS.EZSDK.SetRequestHttpsHost(OnAppConfig.Instance.RequestHttpsHost);