| | |
| | | { |
| | | //报警推送弹窗提示 |
| | | ShowAlarmPushMessage(jpushMessageInfo, true); |
| | | //萤石门锁推送 |
| | | UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | | } |
| | | else if (jpushMessageInfo.messageType == (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 == PushMessageType.HDL_INTERPHONE.ToString()) |
| | | { |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return; |
| | | |
| | | //字段兼容问题,只能直接取值了 |
| | | var json = Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent); |
| | | |
| | | //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.Lc_DeviceId = json["deviceId"].ToString(); |
| | | eSVideoInfo.spk = json["spk"].ToString(); |
| | | |
| | | eSVideoInfo.HomeId = jpushMessageInfo.HomeId; |
| | | if (json.ContainsKey("msgId") && !string.IsNullOrEmpty(json["msgId"].ToString())) |
| | | { |
| | | eSVideoInfo.msgId = json["msgId"].ToString(); |
| | | } |
| | | if (json.ContainsKey("currentTime") && !string.IsNullOrEmpty(json["currentTime"].ToString())) |
| | | { |
| | | eSVideoInfo.currentTime = json["currentTime"].ToString(); |
| | | } |
| | | } |
| | | else if (interphoneTypeEnum == InterphoneType.HDL.ToString()) |
| | | { |
| | | try |
| | | { |
| | | 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 (Exception ex) { |
| | | MainPage.Log("Error", $"自研可视对讲通知异常:{ex.StackTrace}"); |
| | | } |
| | | |
| | | #if __ANDROID__ |
| | | Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MissedCallsTime = 30; |
| | | Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.SetMediaPlayerLooping(true); |
| | | Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.PlayRingtone(); |
| | | new Thread(() => |
| | | { |
| | | try |
| | | { |
| | | DateTime dateTime = DateTime.Now; |
| | | while (true) |
| | | { |
| | | Thread.Sleep(1000); |
| | | if (!Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MediaPlayerPlayingStatus || dateTime.AddSeconds(Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.MissedCallsTime) <= DateTime.Now) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.SetMediaPlayerLooping(false); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log("error", "自研可视对讲铃声播放异常:" + ex.Message); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | #elif __IOS__ |
| | | SoundPlayer.Ins.PlaySound(); |
| | | new Thread(() => { |
| | | int count = 0; |
| | | while (true) |
| | | { |
| | | if (SoundPlayer.Ins.player == null) |
| | | { |
| | | break; |
| | | } |
| | | if (!SoundPlayer.Ins.player.Playing) |
| | | { |
| | | break; |
| | | } |
| | | System.Threading.Thread.Sleep(1000); |
| | | count++; |
| | | MainPage.Log("linphone 呼叫计时:" + count); |
| | | if (count > 29) |
| | | { |
| | | SoundPlayer.Ins.StopSound(); |
| | | Application.RunOnMainThread(() => { |
| | | try |
| | | { |
| | | HDLLinPhoneSDK.Instance().HideIntercomeVC(); |
| | | }catch(Exception ex) |
| | | { |
| | | MainPage.Log("error", "ios linphone 呼叫超时关闭界面异常:" + ex.Message); |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | #endif |
| | | |
| | | MainPage.Log("接收到推送: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(); |
| | | //打开呼叫页面 |
| | | HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo, InterphoneType.HDL.ToString(), jpushMessageInfo.isNotificationGoing); |
| | | 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 == (PushMessageType.Prompt.ToString())) |
| | | { |
| | | ShowAlarmPushMessage(jpushMessageInfo, false); |
| | | //萤石门锁推送 |
| | | HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | | } |
| | | else if (jpushMessageInfo.messageType == (PushMessageType.DOOR_BELL.ToString())) |
| | | { |
| | | //萤石门锁推送 |
| | | HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | | } |
| | | |
| | | |
| | |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | DB_ResidenceData.Instance.EixtAccount(); |
| | | MainPage.Log("退出账号清空数据"); |
| | | //4.注销HDLSIP账号登录 2021-08-20 |
| | | HDLLinphone.Current.LogoutAllAccount(); |
| | | MainPage.Log("注销HDLSIP账号登录"); |
| | | |
| | | #if __IOS__ |
| | |
| | | } |
| | | #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, |
| | | HttpUtil.APP_KEY, HttpUtil.SECRET_KEY); |
| | | 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 |
| | | { |
| | | if (result.Code != "-1") |
| | | IMessageCommon.Current.ShowErrorInfoAlter(result.Code); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (waitPage != null) |
| | | { |
| | | waitPage.RemoveFromParent(); |
| | | waitPage = null; |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |