From 7f62f2d3bf626ac55d2d2de05ca1d71eaaabef39 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期四, 13 五月 2021 09:55:37 +0800
Subject: [PATCH] 2021-05-13 1.备份

---
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyBreathingLight.h                          |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroupDevice.h                             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h                                 |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.h                                                |    9 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCUtlis.h                                                                  |   13 
 iOS/LCOnDemo/LCOnDemo/Base.lproj/LaunchScreen.storyboard                                                             |   25 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.m                                                |   38 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnGroupDeviceList.h                             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.h                                               |    8 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/Contents.json                           |   21 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordNum.h                           |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecords.h                             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecords.h                             |    0 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCCallDelegate.h                                                          |   16 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.m                                               |  122 +-
 iOS/Xamarin/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj                                                              |   20 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteRole.h                                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceList.h                                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceOnline.h                                  |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetDeviceSnap.h                                 |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png           |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/netsdk.h                                     |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_hangup.png                       |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_back.png                         |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiDefine.h                                         |    0 
 iOS/LCOnDemo/LCOnDemo/Base.lproj/Main.storyboard                                                                     |   86 ++
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDevice.h                                  |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecords.h                         |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h                          |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordBitmap.h                        |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/Contents.json                                                                  |    6 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.m                                                                 |   14 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/FrameReverseStatus.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteUserAuthTager.h                           |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupDeviceList.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteAlarmMessage.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetUserAuthTager.h                              |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/Contents.json                                    |   21 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RecoverSDCard.h                                 |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.h                                                                 |   16 
 iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata                                         |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.csproj                           |   34 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStrategies.h                                 |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.a                                        |    0 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnIntercomViewController.h                                              |    8 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserBindNoVerify.h                              |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDevicePwd.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_TalkerListener.h                      |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/ic_esvideo_on_unlock_unselect.png       |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/ViewController.m                                                                       |   42 +
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordBitmap.h                        |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceVersionList.h                             |    0 
 iOS/LCOnDemo/LCOnDemo/ViewController.m                                                                               |   82 ++
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStorageStrategy.h                            |    0 
 iOS/LCOnDemo/LCOnDemo/AppDelegate.m                                                                                  |   40 +
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceChannelInfo.h                         |    0 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/Info.plist                      |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.h                                        |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroupDevice.h                                |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BeAuthDeviceList.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyCloudRecordPlan.h                         |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAlarmPlan.h                               |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AccentColor.colorset/Contents.json                                             |   11 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordNum.h                       |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/ic_esvideo_on_answer.png                         |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/libLCSDKOnXamarin.a                              |    0 
 iOS/LCOnDemo/LCOnDemo/AppDelegate.h                                                                                  |   14 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/ic_esvideo_on_takephoto_select.png     |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Log.h                                 |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/ApiDefinition.cs                                         |  128 +++
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Param.h                               |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png                |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/Contents.json                                    |   21 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/LCOpenSDKDynamic                |    0 
 iOS/LCOnDemo/LCOnDemo/main.m                                                                                         |   18 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_ConfigWifi.h                          |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_answer.png                       |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_SoftAP.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlDeviceWifi.h                             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_LoginManager.h                        |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DownloadListener.h                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudRecords.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetAllStorageStrategy.h                         |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordNum.h                           |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/Contents.json                                      |   21 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png              |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.m                                                     |  122 +-
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/ic_esvideo_on_unlock_select.png           |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/WifiAround.h                                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeDevice.h                                 |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.h                                                     |    8 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.h                                                                       |   18 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyFrameReverseStatus.h                      |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/ic_esvideo_on_takephoto_unselect.png |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.m                                                                       |   11 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/LCOpenSDKDynamic.a                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmPlan.h                         |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CheckDeviceBindOrNot.h                          |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/ic_esvideo_on_hangup.png                         |    0 
 iOS/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj                                                                      |  540 +++++++++++++++
 iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist                            |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.h                                                      |    9 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.h                                                           |   16 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ChildGroupList.h                                |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAlarmMessage.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiResponse.h                                       |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CurrentDeviceWifi.h                             |    0 
 iOS/LCOnDemo/LCOnDemo/ViewController.h                                                                               |   14 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetStorageStrategy.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BreathingLightStatus.h                          |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudPlanRecords.h                        |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/Contents.json                             |   21 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h                           |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.m                                                           |   14 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAuthInfo.h                                |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordCallNum.h                       |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.h                                                                 |   17 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/Contents.json                        |   21 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RoleList.h                                      |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserAuthList.h                                  |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiRequest.h                                        |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmStatus.h                       |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/PassengerFlow.h                                 |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordBitmap.h                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAuthFunctions.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeProcessDevice.h                          |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Structs.cs                                               |    6 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Download.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.m                                                                 |   12 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/ic_esvideo_on_back.png                             |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/LCOpenSDK_NetsdkLogin.h                      |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin.xcodeproj/project.pbxproj                                                  |   64 +
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCUtlis.h                                                                        |   13 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserTokenByAccount.h                            |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDevice.h                                    |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ShareDeviceList.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlPTZ.h                                    |    0 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/libLCSDKOnXamarin.a                                                               |    0 
 iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.m                                                      |   38 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CloudRecordPlan.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroup.h                                   |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupList.h                                     |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.sln                                                      |   12 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DeviceInit.h                          |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Utils.h                               |    0 
 iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Properties/AssemblyInfo.cs                               |    6 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddRole.h                                       |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetCloudRecords.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceName.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/OpenCloudRecord.h                               |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDeviceInfo.h                              |    0 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h                       |    0 
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AppIcon.appiconset/Contents.json                                               |   98 ++
 iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/Contents.json                          |   21 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetRecordByLinkageId.h                          |    0 
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCApiKit.h                                                                |   17 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroup.h                                      |    0 
 /dev/null                                                                                                            |    6 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UploadDeviceCoverPicture.h                      |    0 
 iOS/LCOnDemo/LCOnDemo/Info.plist                                                                                     |   79 ++
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCUtlis.h                                                                 |   13 
 iOS/LCOnDemo/LCOnDemo/SceneDelegate.m                                                                                |   57 +
 iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnMonitorViewController.h                                               |   25 
 iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceInfo.h                                |    0 
 iOS/LCOnDemo/LCOnDemo/SceneDelegate.h                                                                                |   15 
 167 files changed, 1,875 insertions(+), 252 deletions(-)

diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.h b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCApiKit.h
similarity index 79%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.h
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCApiKit.h
index 0f9bf9f..6bda54d 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.h
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCApiKit.h
@@ -7,7 +7,9 @@
 
 #import <Foundation/Foundation.h>
 
+
 NS_ASSUME_NONNULL_BEGIN
+
 
 @interface LCApiKit : NSObject
 /**
@@ -41,6 +43,21 @@
 - (void)initSDKOpenApi:(NSString *)lcToken;
 ///// 鎷兼帴閿欒淇℃伅
 //- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code;
+
+/// 鎺ュ彛
+
+///**
+// *  @since
+// *  寮�閿佹帴鍙�
+// *
+// *  @param deviceId 璁惧搴忓垪鍙�
+// *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+// *
+// */
+//- (void)openDoorbell:(NSString *)deviceId completion:(void (^)(ResponseData *responseData))completion;
+
+
+
 @end
 
 
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCCallDelegate.h
similarity index 62%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCCallDelegate.h
index 0e8e50e..dfb8dc1 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCCallDelegate.h
@@ -1,9 +1,8 @@
 //
-//  ESCallDelegate.h
-//  ESVideoPhoneSDKDemo
+//  LCCallDelegate.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
 #import <Foundation/Foundation.h>
@@ -11,7 +10,10 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@protocol ESCallDelegate <NSObject>
+//寮�閿佹垚鍔熼�氱煡
+extern NSString *const LCCallDelegateOpenDoorSuccess;
+
+@protocol LCCallDelegate <NSObject>
 
 //鎺ュ惉鍥炶皟
 -(void)onAnswerAction;
@@ -19,7 +21,7 @@
 //鎷掓帴鏉ョ數鍥炶皟
 -(void)onRejectCallAction;
 
-//寮�濮嬫垚鍔熷洖璋�
+//寮�閿佸洖璋�
 -(void)onUnlockAction;
 
 //鎸傛柇锛堥�氳瘽缁撴潫锛�
@@ -30,7 +32,7 @@
 
 @end
 
-@interface ESCallDelegate : NSObject
+@interface LCCallDelegate : NSObject
 
 @end
 
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.h b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnIntercomViewController.h
similarity index 66%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.h
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnIntercomViewController.h
index a602b63..5876640 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.h
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnIntercomViewController.h
@@ -6,17 +6,17 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "ESCallDelegate.h"
+#import "LCCallDelegate.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface LCOnIntercomViewController : UIViewController
 
-#pragma mark ESCallDelegate
+#pragma mark LCCallDelegate
 /**
- 涓版灄浜嬩欢浠g悊
+ 浜嬩欢浠g悊
  */
-@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
 
 #pragma mark 瀵瑰鎺ュ彛鏂规硶
 
diff --git a/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnMonitorViewController.h b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnMonitorViewController.h
new file mode 100644
index 0000000..11e6d4e
--- /dev/null
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCOnMonitorViewController.h
@@ -0,0 +1,25 @@
+//
+//  LCOnMonitorViewController.h
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import <UIKit/UIKit.h>
+#import "LCCallDelegate.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LCOnMonitorViewController : UIViewController
+
+#pragma mark LCCallDelegate
+/**
+ 浜嬩欢浠g悊
+ */
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
+
+#pragma mark 瀵瑰鎺ュ彛鏂规硶
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Info.plist b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/Info.plist
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Info.plist
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/Info.plist
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/LCOpenSDKDynamic b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/LCOpenSDKDynamic
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/LCOpenSDKDynamic
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin/LCOpenSDKDynamic.framework/LCOpenSDKDynamic
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCUtlis.h
similarity index 91%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
rename to iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCUtlis.h
index ac50ea5..c50a61b 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/include/LCUtlis.h
@@ -1,12 +1,11 @@
 //
-//  ESOnUtlis.h
-//  ESVideoPhoneSDKDemo
+//  LCUtlis.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
-
+#import <Foundation/Foundation.h>
 
 #define TP_SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
 //#define IOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
@@ -54,11 +53,11 @@
 #define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
 #define HEXCOLORA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
 
-#import <Foundation/Foundation.h>
+#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface ESOnUtlis : NSObject
+@interface LCUtlis : NSObject
 
 @end
 
diff --git a/iOS/LCOnDemo/Depend/LCSDKOnXamarin/libLCSDKOnXamarin.a b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/libLCSDKOnXamarin.a
new file mode 100644
index 0000000..1cb7452
--- /dev/null
+++ b/iOS/LCOnDemo/Depend/LCSDKOnXamarin/libLCSDKOnXamarin.a
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj b/iOS/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..5f3044b
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj
@@ -0,0 +1,540 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 50;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		B92E6AFE264BB0EC00D63F4B /* libLCSDKOnXamarin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B92E6AF4264BB0D200D63F4B /* libLCSDKOnXamarin.a */; };
+		B92E6B09264BB12200D63F4B /* LCOpenSDKDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B92E6B06264BB12200D63F4B /* LCOpenSDKDynamic.framework */; };
+		B92E6B0A264BB12200D63F4B /* libLCSDKOnXamarin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B92E6B08264BB12200D63F4B /* libLCSDKOnXamarin.a */; };
+		B92E6B0B264BB16A00D63F4B /* LCOpenSDKDynamic.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B92E6B06264BB12200D63F4B /* LCOpenSDKDynamic.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		B9DA498F263662B100C7BD1C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA498E263662B100C7BD1C /* AppDelegate.m */; };
+		B9DA4992263662B100C7BD1C /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA4991263662B100C7BD1C /* SceneDelegate.m */; };
+		B9DA4995263662B100C7BD1C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA4994263662B100C7BD1C /* ViewController.m */; };
+		B9DA4998263662B100C7BD1C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B9DA4996263662B100C7BD1C /* Main.storyboard */; };
+		B9DA499A263662B300C7BD1C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B9DA4999263662B300C7BD1C /* Assets.xcassets */; };
+		B9DA499D263662B300C7BD1C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B9DA499B263662B300C7BD1C /* LaunchScreen.storyboard */; };
+		B9DA49A0263662B300C7BD1C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA499F263662B300C7BD1C /* main.m */; };
+		B9DA49B7263664FA00C7BD1C /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49B6263664FA00C7BD1C /* CoreAudio.framework */; };
+		B9DA49B92636650300C7BD1C /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49B82636650200C7BD1C /* MediaPlayer.framework */; };
+		B9DA49BB2636651E00C7BD1C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49BA2636651E00C7BD1C /* AudioToolbox.framework */; };
+		B9DA49BD2636652500C7BD1C /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49BC2636652500C7BD1C /* VideoToolbox.framework */; };
+		B9DA49BF2636652D00C7BD1C /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49BE2636652D00C7BD1C /* OpenGLES.framework */; };
+		B9DA49C12636653A00C7BD1C /* MediaAccessibility.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C02636653A00C7BD1C /* MediaAccessibility.framework */; };
+		B9DA49C32636654300C7BD1C /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C22636654300C7BD1C /* CoreVideo.framework */; };
+		B9DA49C52636654A00C7BD1C /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C42636654A00C7BD1C /* AVFoundation.framework */; };
+		B9DA49C72636655100C7BD1C /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C62636655100C7BD1C /* CoreMedia.framework */; };
+		B9DA49C92636657100C7BD1C /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C82636657100C7BD1C /* libz.tbd */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		B9DA49CB2636658000C7BD1C /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				B92E6B0B264BB16A00D63F4B /* LCOpenSDKDynamic.framework in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		B92E6AED264BB0D200D63F4B /* LCOnMonitorViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCOnMonitorViewController.h; sourceTree = "<group>"; };
+		B92E6AEE264BB0D200D63F4B /* LCApiKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCApiKit.h; sourceTree = "<group>"; };
+		B92E6AEF264BB0D200D63F4B /* LCOnIntercomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCOnIntercomViewController.h; sourceTree = "<group>"; };
+		B92E6AF0264BB0D200D63F4B /* LCCallDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCCallDelegate.h; sourceTree = "<group>"; };
+		B92E6AF2264BB0D200D63F4B /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
+		B92E6AF3264BB0D200D63F4B /* LCUtlis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCUtlis.h; sourceTree = "<group>"; };
+		B92E6AF4264BB0D200D63F4B /* libLCSDKOnXamarin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libLCSDKOnXamarin.a; sourceTree = "<group>"; };
+		B92E6B01264BB12200D63F4B /* LCOnMonitorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnMonitorViewController.h; sourceTree = "<group>"; };
+		B92E6B02264BB12200D63F4B /* LCApiKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCApiKit.h; sourceTree = "<group>"; };
+		B92E6B03264BB12200D63F4B /* LCOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnIntercomViewController.h; sourceTree = "<group>"; };
+		B92E6B04264BB12200D63F4B /* LCCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCCallDelegate.h; sourceTree = "<group>"; };
+		B92E6B06264BB12200D63F4B /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
+		B92E6B07264BB12200D63F4B /* LCUtlis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCUtlis.h; sourceTree = "<group>"; };
+		B92E6B08264BB12200D63F4B /* libLCSDKOnXamarin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libLCSDKOnXamarin.a; sourceTree = "<group>"; };
+		B9DA498A263662B100C7BD1C /* LCOnDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LCOnDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		B9DA498D263662B100C7BD1C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		B9DA498E263662B100C7BD1C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		B9DA4990263662B100C7BD1C /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
+		B9DA4991263662B100C7BD1C /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
+		B9DA4993263662B100C7BD1C /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+		B9DA4994263662B100C7BD1C /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
+		B9DA4997263662B100C7BD1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		B9DA4999263662B300C7BD1C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		B9DA499C263662B300C7BD1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		B9DA499E263662B300C7BD1C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		B9DA499F263662B300C7BD1C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		B9DA49B6263664FA00C7BD1C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		B9DA49B82636650200C7BD1C /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
+		B9DA49BA2636651E00C7BD1C /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		B9DA49BC2636652500C7BD1C /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; };
+		B9DA49BE2636652D00C7BD1C /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		B9DA49C02636653A00C7BD1C /* MediaAccessibility.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaAccessibility.framework; path = System/Library/Frameworks/MediaAccessibility.framework; sourceTree = SDKROOT; };
+		B9DA49C22636654300C7BD1C /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };
+		B9DA49C42636654A00C7BD1C /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		B9DA49C62636655100C7BD1C /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
+		B9DA49C82636657100C7BD1C /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		B9DA4987263662B100C7BD1C /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B92E6AFE264BB0EC00D63F4B /* libLCSDKOnXamarin.a in Frameworks */,
+				B9DA49C92636657100C7BD1C /* libz.tbd in Frameworks */,
+				B9DA49C72636655100C7BD1C /* CoreMedia.framework in Frameworks */,
+				B92E6B0A264BB12200D63F4B /* libLCSDKOnXamarin.a in Frameworks */,
+				B9DA49C52636654A00C7BD1C /* AVFoundation.framework in Frameworks */,
+				B9DA49C32636654300C7BD1C /* CoreVideo.framework in Frameworks */,
+				B9DA49C12636653A00C7BD1C /* MediaAccessibility.framework in Frameworks */,
+				B92E6B09264BB12200D63F4B /* LCOpenSDKDynamic.framework in Frameworks */,
+				B9DA49BF2636652D00C7BD1C /* OpenGLES.framework in Frameworks */,
+				B9DA49BD2636652500C7BD1C /* VideoToolbox.framework in Frameworks */,
+				B9DA49BB2636651E00C7BD1C /* AudioToolbox.framework in Frameworks */,
+				B9DA49B92636650300C7BD1C /* MediaPlayer.framework in Frameworks */,
+				B9DA49B7263664FA00C7BD1C /* CoreAudio.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		B92E6AD4264BAF7B00D63F4B /* SDK */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AFF264BB12200D63F4B /* LCSDKOnXamarin */,
+			);
+			path = SDK;
+			sourceTree = "<group>";
+		};
+		B92E6AEB264BB0D200D63F4B /* LCSDKOnXamarin */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AEC264BB0D200D63F4B /* include */,
+				B92E6AF4264BB0D200D63F4B /* libLCSDKOnXamarin.a */,
+			);
+			name = LCSDKOnXamarin;
+			path = Depend/LCSDKOnXamarin;
+			sourceTree = "<group>";
+		};
+		B92E6AEC264BB0D200D63F4B /* include */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AED264BB0D200D63F4B /* LCOnMonitorViewController.h */,
+				B92E6AEE264BB0D200D63F4B /* LCApiKit.h */,
+				B92E6AEF264BB0D200D63F4B /* LCOnIntercomViewController.h */,
+				B92E6AF0264BB0D200D63F4B /* LCCallDelegate.h */,
+				B92E6AF1264BB0D200D63F4B /* LCSDKOnXamarin */,
+				B92E6AF3264BB0D200D63F4B /* LCUtlis.h */,
+			);
+			path = include;
+			sourceTree = "<group>";
+		};
+		B92E6AF1264BB0D200D63F4B /* LCSDKOnXamarin */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AF2264BB0D200D63F4B /* LCOpenSDKDynamic.framework */,
+			);
+			path = LCSDKOnXamarin;
+			sourceTree = "<group>";
+		};
+		B92E6AFF264BB12200D63F4B /* LCSDKOnXamarin */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6B00264BB12200D63F4B /* include */,
+				B92E6B08264BB12200D63F4B /* libLCSDKOnXamarin.a */,
+			);
+			name = LCSDKOnXamarin;
+			path = Depend/LCSDKOnXamarin;
+			sourceTree = SOURCE_ROOT;
+		};
+		B92E6B00264BB12200D63F4B /* include */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6B01264BB12200D63F4B /* LCOnMonitorViewController.h */,
+				B92E6B02264BB12200D63F4B /* LCApiKit.h */,
+				B92E6B03264BB12200D63F4B /* LCOnIntercomViewController.h */,
+				B92E6B04264BB12200D63F4B /* LCCallDelegate.h */,
+				B92E6B05264BB12200D63F4B /* LCSDKOnXamarin */,
+				B92E6B07264BB12200D63F4B /* LCUtlis.h */,
+			);
+			path = include;
+			sourceTree = "<group>";
+		};
+		B92E6B05264BB12200D63F4B /* LCSDKOnXamarin */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6B06264BB12200D63F4B /* LCOpenSDKDynamic.framework */,
+			);
+			path = LCSDKOnXamarin;
+			sourceTree = "<group>";
+		};
+		B9DA4981263662B100C7BD1C = {
+			isa = PBXGroup;
+			children = (
+				B9DA498C263662B100C7BD1C /* LCOnDemo */,
+				B9DA498B263662B100C7BD1C /* Products */,
+				B9DA49B3263664E400C7BD1C /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		B9DA498B263662B100C7BD1C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				B9DA498A263662B100C7BD1C /* LCOnDemo.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		B9DA498C263662B100C7BD1C /* LCOnDemo */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AD4264BAF7B00D63F4B /* SDK */,
+				B9DA498D263662B100C7BD1C /* AppDelegate.h */,
+				B9DA498E263662B100C7BD1C /* AppDelegate.m */,
+				B9DA4990263662B100C7BD1C /* SceneDelegate.h */,
+				B9DA4991263662B100C7BD1C /* SceneDelegate.m */,
+				B9DA4993263662B100C7BD1C /* ViewController.h */,
+				B9DA4994263662B100C7BD1C /* ViewController.m */,
+				B9DA4996263662B100C7BD1C /* Main.storyboard */,
+				B9DA4999263662B300C7BD1C /* Assets.xcassets */,
+				B9DA499B263662B300C7BD1C /* LaunchScreen.storyboard */,
+				B9DA499E263662B300C7BD1C /* Info.plist */,
+				B9DA499F263662B300C7BD1C /* main.m */,
+			);
+			path = LCOnDemo;
+			sourceTree = "<group>";
+		};
+		B9DA49B3263664E400C7BD1C /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				B92E6AEB264BB0D200D63F4B /* LCSDKOnXamarin */,
+				B9DA49C82636657100C7BD1C /* libz.tbd */,
+				B9DA49C62636655100C7BD1C /* CoreMedia.framework */,
+				B9DA49C42636654A00C7BD1C /* AVFoundation.framework */,
+				B9DA49C22636654300C7BD1C /* CoreVideo.framework */,
+				B9DA49C02636653A00C7BD1C /* MediaAccessibility.framework */,
+				B9DA49BE2636652D00C7BD1C /* OpenGLES.framework */,
+				B9DA49BC2636652500C7BD1C /* VideoToolbox.framework */,
+				B9DA49BA2636651E00C7BD1C /* AudioToolbox.framework */,
+				B9DA49B82636650200C7BD1C /* MediaPlayer.framework */,
+				B9DA49B6263664FA00C7BD1C /* CoreAudio.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		B9DA4989263662B100C7BD1C /* LCOnDemo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B9DA49A3263662B300C7BD1C /* Build configuration list for PBXNativeTarget "LCOnDemo" */;
+			buildPhases = (
+				B9DA4986263662B100C7BD1C /* Sources */,
+				B9DA4987263662B100C7BD1C /* Frameworks */,
+				B9DA4988263662B100C7BD1C /* Resources */,
+				B9DA49CB2636658000C7BD1C /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = LCOnDemo;
+			productName = LCOnDemo;
+			productReference = B9DA498A263662B100C7BD1C /* LCOnDemo.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		B9DA4982263662B100C7BD1C /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 1220;
+				TargetAttributes = {
+					B9DA4989263662B100C7BD1C = {
+						CreatedOnToolsVersion = 12.2;
+					};
+				};
+			};
+			buildConfigurationList = B9DA4985263662B100C7BD1C /* Build configuration list for PBXProject "LCOnDemo" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = B9DA4981263662B100C7BD1C;
+			productRefGroup = B9DA498B263662B100C7BD1C /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				B9DA4989263662B100C7BD1C /* LCOnDemo */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		B9DA4988263662B100C7BD1C /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B9DA499D263662B300C7BD1C /* LaunchScreen.storyboard in Resources */,
+				B9DA499A263662B300C7BD1C /* Assets.xcassets in Resources */,
+				B9DA4998263662B100C7BD1C /* Main.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		B9DA4986263662B100C7BD1C /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B9DA4995263662B100C7BD1C /* ViewController.m in Sources */,
+				B9DA498F263662B100C7BD1C /* AppDelegate.m in Sources */,
+				B9DA49A0263662B300C7BD1C /* main.m in Sources */,
+				B9DA4992263662B100C7BD1C /* SceneDelegate.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		B9DA4996263662B100C7BD1C /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				B9DA4997263662B100C7BD1C /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		B9DA499B263662B300C7BD1C /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				B9DA499C263662B300C7BD1C /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		B9DA49A1263662B300C7BD1C /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		B9DA49A2263662B300C7BD1C /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		B9DA49A4263662B300C7BD1C /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				CODE_SIGN_STYLE = Manual;
+				DEVELOPMENT_TEAM = BVTA78PRYA;
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Depend",
+					"$(PROJECT_DIR)/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin",
+				);
+				HEADER_SEARCH_PATHS = (
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenSDK",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
+				);
+				INFOPLIST_FILE = LCOnDemo/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Depend/LCSDKOnXamarin",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.hdl.lcondemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE_SPECIFIER = Test;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		B9DA49A5263662B300C7BD1C /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				CODE_SIGN_STYLE = Manual;
+				DEVELOPMENT_TEAM = BVTA78PRYA;
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Depend",
+					"$(PROJECT_DIR)/Depend/LCSDKOnXamarin/include/LCSDKOnXamarin",
+				);
+				HEADER_SEARCH_PATHS = (
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenSDK",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
+					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
+				);
+				INFOPLIST_FILE = LCOnDemo/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Depend/LCSDKOnXamarin",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.hdl.lcondemo;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE_SPECIFIER = Test;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		B9DA4985263662B100C7BD1C /* Build configuration list for PBXProject "LCOnDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B9DA49A1263662B300C7BD1C /* Debug */,
+				B9DA49A2263662B300C7BD1C /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B9DA49A3263662B300C7BD1C /* Build configuration list for PBXNativeTarget "LCOnDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B9DA49A4263662B300C7BD1C /* Debug */,
+				B9DA49A5263662B300C7BD1C /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = B9DA4982263662B100C7BD1C /* Project object */;
+}
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to iOS/LCOnDemo/LCOnDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/iOS/LCOnDemo/LCOnDemo/AppDelegate.h b/iOS/LCOnDemo/LCOnDemo/AppDelegate.h
new file mode 100644
index 0000000..61b0798
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/AppDelegate.h
@@ -0,0 +1,14 @@
+//
+//  AppDelegate.h
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+
+@end
+
diff --git a/iOS/LCOnDemo/LCOnDemo/AppDelegate.m b/iOS/LCOnDemo/LCOnDemo/AppDelegate.m
new file mode 100644
index 0000000..ab6b9ce
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/AppDelegate.m
@@ -0,0 +1,40 @@
+//
+//  AppDelegate.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import "AppDelegate.h"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    // Override point for customization after application launch.
+    return YES;
+}
+
+
+#pragma mark - UISceneSession lifecycle
+
+
+- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
+    // Called when a new scene session is being created.
+    // Use this method to select a configuration to create the new scene with.
+    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
+}
+
+
+- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
+    // Called when the user discards a scene session.
+    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
+    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+}
+
+
+@end
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+  "colors" : [
+    {
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..9221b9b
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "60x60"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "60x60"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "76x76"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "76x76"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "83.5x83.5"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "scale" : "1x",
+      "size" : "1024x1024"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/Contents.json
new file mode 100644
index 0000000..80a77e1
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_answer.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_answer.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/ic_esvideo_on_answer.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_answer.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_answer.imageset/ic_esvideo_on_answer.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/Contents.json
new file mode 100644
index 0000000..058c078
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_back.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_back.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/ic_esvideo_on_back.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_back.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_back.imageset/ic_esvideo_on_back.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/Contents.json
new file mode 100644
index 0000000..b73abe3
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_hangup.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_hangup.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/ic_esvideo_on_hangup.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_hangup.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_hangup.imageset/ic_esvideo_on_hangup.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/Contents.json
new file mode 100644
index 0000000..2bd2ba8
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_takephoto_select.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/ic_esvideo_on_takephoto_select.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_select.imageset/ic_esvideo_on_takephoto_select.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/Contents.json
new file mode 100644
index 0000000..a9a3d61
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_takephoto_unselect.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/ic_esvideo_on_takephoto_unselect.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_takephoto_unselect.imageset/ic_esvideo_on_takephoto_unselect.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/Contents.json
new file mode 100644
index 0000000..4b6631a
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_unlock_select.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/ic_esvideo_on_unlock_select.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_select.imageset/ic_esvideo_on_unlock_select.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/Contents.json b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/Contents.json
new file mode 100644
index 0000000..36d8c4f
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_esvideo_on_unlock_unselect.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png b/iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/ic_esvideo_on_unlock_unselect.png
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png
copy to iOS/LCOnDemo/LCOnDemo/Assets.xcassets/ic_esvideo_on_unlock_unselect.imageset/ic_esvideo_on_unlock_unselect.png
Binary files differ
diff --git a/iOS/LCOnDemo/LCOnDemo/Base.lproj/LaunchScreen.storyboard b/iOS/LCOnDemo/LCOnDemo/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..865e932
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+</document>
diff --git a/iOS/LCOnDemo/LCOnDemo/Base.lproj/Main.storyboard b/iOS/LCOnDemo/LCOnDemo/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..9d4ee60
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Base.lproj/Main.storyboard
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="SX2-Zf-foU">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8VI-lw-LNY">
+                                <rect key="frame" x="20" y="208" width="374" height="40"/>
+                                <color key="backgroundColor" systemColor="systemGray6Color"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="6bM-cQ-oQc"/>
+                                </constraints>
+                                <color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <state key="normal" title="鐩戞帶"/>
+                                <connections>
+                                    <action selector="monitoringAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="U5a-jt-bRf"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Kt-mO-sHt">
+                                <rect key="frame" x="20" y="268" width="374" height="40"/>
+                                <color key="backgroundColor" systemColor="systemGray6Color"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="On0-IA-SvE"/>
+                                </constraints>
+                                <color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <state key="normal" title="鏉ョ數鎺ュ惉"/>
+                                <connections>
+                                    <action selector="callAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="hXs-Ig-Hki"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="8VI-lw-LNY" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="120" id="Euq-N7-gZh"/>
+                            <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="8VI-lw-LNY" secondAttribute="trailing" constant="20" id="RXL-nO-aJL"/>
+                            <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="5Kt-mO-sHt" secondAttribute="trailing" constant="20" id="VbG-6M-zFH"/>
+                            <constraint firstItem="8VI-lw-LNY" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="aAb-vF-2SJ"/>
+                            <constraint firstItem="5Kt-mO-sHt" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="iaH-bQ-qXm"/>
+                            <constraint firstItem="5Kt-mO-sHt" firstAttribute="top" secondItem="8VI-lw-LNY" secondAttribute="bottom" constant="20" id="p6G-hd-t2E"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="Chs-AB-cQc"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="624.63768115942037" y="-579.24107142857144"/>
+        </scene>
+        <!--Navigation Controller-->
+        <scene sceneID="GDi-Qv-mGU">
+            <objects>
+                <navigationController id="SX2-Zf-foU" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="fbS-Cs-968">
+                        <rect key="frame" x="0.0" y="44" width="414" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="3Ah-wC-3nM"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="hzp-9g-czL" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-223" y="-579"/>
+        </scene>
+    </scenes>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+        <systemColor name="systemGray6Color">
+            <color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/iOS/LCOnDemo/LCOnDemo/Info.plist b/iOS/LCOnDemo/LCOnDemo/Info.plist
new file mode 100644
index 0000000..2322d81
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/Info.plist
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIApplicationSceneManifest</key>
+	<dict>
+		<key>UIApplicationSupportsMultipleScenes</key>
+		<false/>
+		<key>UISceneConfigurations</key>
+		<dict>
+			<key>UIWindowSceneSessionRoleApplication</key>
+			<array>
+				<dict>
+					<key>UISceneConfigurationName</key>
+					<string>Default Configuration</string>
+					<key>UISceneDelegateClassName</key>
+					<string>SceneDelegate</string>
+					<key>UISceneStoryboardFile</key>
+					<string>Main</string>
+				</dict>
+			</array>
+		</dict>
+	</dict>
+	<key>UIApplicationSupportsIndirectInputEvents</key>
+	<true/>
+	<key>UILaunchStoryboardName</key>
+	<string>LaunchScreen</string>
+	<key>UIMainStoryboardFile</key>
+	<string>Main</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>NSCameraUsageDescription</key>
+	<string>Camera Use</string>
+	<key>NSMicrophoneUsageDescription</key>
+	<string>Microphone Use</string>
+	<key>NSPhotoLibraryAddUsageDescription</key>
+	<string>Photo Library Use</string>
+	<key>NSPhotoLibraryUsageDescription</key>
+	<string>Photo Library Use</string>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
+</dict>
+</plist>
diff --git a/iOS/LCOnDemo/LCOnDemo/SceneDelegate.h b/iOS/LCOnDemo/LCOnDemo/SceneDelegate.h
new file mode 100644
index 0000000..3fa9ff8
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/SceneDelegate.h
@@ -0,0 +1,15 @@
+//
+//  SceneDelegate.h
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
+
+@property (strong, nonatomic) UIWindow * window;
+
+@end
+
diff --git a/iOS/LCOnDemo/LCOnDemo/SceneDelegate.m b/iOS/LCOnDemo/LCOnDemo/SceneDelegate.m
new file mode 100644
index 0000000..ef179ed
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/SceneDelegate.m
@@ -0,0 +1,57 @@
+//
+//  SceneDelegate.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import "SceneDelegate.h"
+
+@interface SceneDelegate ()
+
+@end
+
+@implementation SceneDelegate
+
+
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
+    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+}
+
+
+- (void)sceneDidDisconnect:(UIScene *)scene {
+    // Called as the scene is being released by the system.
+    // This occurs shortly after the scene enters the background, or when its session is discarded.
+    // Release any resources associated with this scene that can be re-created the next time the scene connects.
+    // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
+}
+
+
+- (void)sceneDidBecomeActive:(UIScene *)scene {
+    // Called when the scene has moved from an inactive state to an active state.
+    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+}
+
+
+- (void)sceneWillResignActive:(UIScene *)scene {
+    // Called when the scene will move from an active state to an inactive state.
+    // This may occur due to temporary interruptions (ex. an incoming phone call).
+}
+
+
+- (void)sceneWillEnterForeground:(UIScene *)scene {
+    // Called as the scene transitions from the background to the foreground.
+    // Use this method to undo the changes made on entering the background.
+}
+
+
+- (void)sceneDidEnterBackground:(UIScene *)scene {
+    // Called as the scene transitions from the foreground to the background.
+    // Use this method to save data, release shared resources, and store enough scene-specific state information
+    // to restore the scene back to its current state.
+}
+
+
+@end
diff --git a/iOS/LCOnDemo/LCOnDemo/ViewController.h b/iOS/LCOnDemo/LCOnDemo/ViewController.h
new file mode 100644
index 0000000..c2eea2b
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/ViewController.h
@@ -0,0 +1,14 @@
+//
+//  ViewController.h
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ViewController : UIViewController
+
+
+@end
+
diff --git a/iOS/LCOnDemo/LCOnDemo/ViewController.m b/iOS/LCOnDemo/LCOnDemo/ViewController.m
new file mode 100644
index 0000000..33d4153
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/ViewController.m
@@ -0,0 +1,82 @@
+//
+//  ViewController.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import "ViewController.h"
+#import "LCOnIntercomViewController.h"
+#import "LCOnMonitorViewController.h"
+#import "LCUtlis.h"
+#import "LCCallDelegate.h"
+#import "LCApiKit.h"
+
+@interface ViewController ()<LCCallDelegate>
+
+@end
+
+@implementation ViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    
+    //鍒濆鍖朙COpenSDK_Api
+    [[LCApiKit sharedInstance] initSDKOpenApi:@"St_00003e12612fa94244d9a690564cd04b"];
+    [[LCApiKit sharedInstance] setCurrentDevicePlayToken:@"kjcIZVPXrxmGRvHDeFfuIlCO/PHeAiPok6s0OhwLZZ0EsjA9ocumo1JFkvyJBTnnG/j0/aMmpwav9Qbg/qceXMI4DiLbcYqff6q9Sn+Afoyo6mIjOnV+Ft83RhvPDneP2b3Uv+qGK4x+ttq3kuAgTwZA+x80ZoDsUz8na8m+++lwC7QRQ0AXhgN4kc9BaOn0jCuuSPgX4hx0O+5rjtIdGv0UL7KYNmkeKQCCUOlbjg4cjI1UnKlWAh5NXXxmKZkS2Y8t2cGRnkxXL+UkZ95QgPk+Luh/GhOgA4AzPwcitXe3WE43uUAikwgY5sytAVMvDz69Eis1a/ZSoR+UXY0J7BTKP5hoOvKphFmMQr+zi8qY/2WGqKWFx+wFplxe7E73lILyNqxO2klqMAv81IeL+6A6PqdGUC0uyaRIBOmW4K2Rd2G6WcMqs+3SRfNSJcU2/MniRpgYUURNhaZF6erPsZ69jG2FS0XYVrDPvHMDoRkjElDHYdky1psgMUb4faQaQwgdKz6IydqqTr8QA8go1rjx4ub2B6vupuBG01fa2CDTgTZj4iiGVPOAtSmbyNxGKTaH6KhleWJ3s/d9mHgbPp/Y884KLTGgJ/sqvg/D1w8SiN1V5dcNc2jgXBT3Uc90vF2ryxMRMak0g+CIgkfB6t8VUrDalWlp9NTxRF2k8xyiq4RoqjK9dyzPOsZfs/KuA6Jok02EkTDjEXGknD8fDvSz6syYqhCrs97M+aaFZDNe2DmFsO+mRkPWX2wcLGq475k19Tox4gYRYLDE6TqvCY/VmvAY2C0h68sh9oEK5z8zg/D+fLiNS+rZZI7Hqs6XOsd88feZygpEs0ny8WdkQSqlqQTEetI+5kGRtZgsdhhvJ7/cEioI8eIHkdDkWmQxMgNfMwuDdn6Rq6zWho85v7T/xAzVhH5l535yZ3tloEKBo3dEoPc6wXHfwhTbw80JINLwn4LKxkeUkdDlMjQp5Z+CDx1fsiR6RYNlNZ288kqdvlo3hhrwQZ6vIQ/8nmAax54+tJiJ4kxCmBYn7AUA12Wj1/bdS/6uCTsyBVtxexYyOefZlPz3AklMjCEDhEIYAuGSnkqBgBfXJV9PnzLIPwp6e4QmKl9M3a4ZpZ8Fxkc="];
+    [[LCApiKit sharedInstance] setCurrentDeviceId:@"6K056CFAAJ8FFA1"];
+    [[LCApiKit sharedInstance] setCurrentDeviceName:@"澶у崕鍙瀵硅"];
+    [[LCApiKit sharedInstance] setCurrentPsk:@"6K056CFAAJ8FFA1"];
+}
+
+///鐩戞帶
+- (IBAction)monitoringAction:(id)sender {
+    LCOnMonitorViewController *mVc = [[LCOnMonitorViewController alloc] init];
+    
+    
+
+    [self.navigationController.navigationBar setHidden: YES];
+    [self.navigationController pushViewController:mVc animated:YES];
+}
+
+///鏉ョ數鎺ュ惉
+- (IBAction)callAction:(id)sender {
+    
+    LCOnIntercomViewController *mVc = [[LCOnIntercomViewController alloc] init];
+    mVc.mLCCallDelegate = self;
+    [self.navigationController.navigationBar setHidden: YES];
+    [self.navigationController pushViewController:mVc animated:YES];
+}
+
+
+
+- (void)onAnswerAction {
+    
+}
+
+- (void)onHangUpAction:(int)callDuration {
+    
+}
+
+- (void)onRejectCallAction {
+    
+}
+
+- (void)onScreenshotSuccessfulAction:(nonnull UIImage *)image {
+    
+}
+
+- (void)onUnlockAction {
+    NSLog(@"onUnlockAction锛氬噯澶囧紑閿�");
+    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
+    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
+        NSLog(@"onUnlockAction锛氶�氱煡寮�閿佹垚鍔�");
+        [[NSNotificationCenter defaultCenter] postNotificationName:LCCallDelegateOpenDoorSuccess
+                                                            object:self];
+    });
+ 
+}
+
+
+@end
diff --git a/iOS/LCOnDemo/LCOnDemo/main.m b/iOS/LCOnDemo/LCOnDemo/main.m
new file mode 100644
index 0000000..7648b92
--- /dev/null
+++ b/iOS/LCOnDemo/LCOnDemo/main.m
@@ -0,0 +1,18 @@
+//
+//  main.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/4/26.
+//
+
+#import <UIKit/UIKit.h>
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+    NSString * appDelegateClassName;
+    @autoreleasepool {
+        // Setup code that might create autoreleased objects goes here.
+        appDelegateClassName = NSStringFromClass([AppDelegate class]);
+    }
+    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
+}
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.pbxproj b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.pbxproj
deleted file mode 100644
index bb3a62c..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,441 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 52;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		B9506A2025F9EE8800F6FD4F /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9506A1F25F9EE8800F6FD4F /* libbz2.tbd */; platformFilter = ios; };
-		B9506A2325F9EE9000F6FD4F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9506A2225F9EE9000F6FD4F /* libz.tbd */; platformFilter = ios; };
-		B9506A2625F9EE9800F6FD4F /* libiconv.2.4.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9506A2525F9EE9800F6FD4F /* libiconv.2.4.0.tbd */; platformFilter = ios; };
-		B9506A3425F9EEE900F6FD4F /* ESOnMonitorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9506A2C25F9EEE900F6FD4F /* ESOnMonitorViewController.m */; platformFilter = ios; };
-		B9506A3625F9EEE900F6FD4F /* ESOnIntercomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9506A2E25F9EEE900F6FD4F /* ESOnIntercomViewController.m */; platformFilter = ios; };
-		B9506A3725F9EEE900F6FD4F /* ESVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = B9506A3125F9EEE900F6FD4F /* ESVideo.m */; platformFilter = ios; };
-		B9506A4725F9F0E300F6FD4F /* ESVideoPhoneSDk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */; platformFilter = ios; };
-		B953070B2639425300977259 /* LCOnMonitorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B95307062639425300977259 /* LCOnMonitorViewController.m */; platformFilter = ios; };
-		B953070C2639425300977259 /* LCApiKit.m in Sources */ = {isa = PBXBuildFile; fileRef = B95307072639425300977259 /* LCApiKit.m */; platformFilter = ios; };
-		B953070D2639425300977259 /* LCOnIntercomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B95307082639425300977259 /* LCOnIntercomViewController.m */; platformFilter = ios; };
-		B9530710263943CD00977259 /* LCOpenSDKDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B953070F263943CD00977259 /* LCOpenSDKDynamic.framework */; platformFilter = ios; };
-		B95307122639497A00977259 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B95307112639497A00977259 /* CoreAudio.framework */; platformFilter = ios; };
-		B95307142639498500977259 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B95307132639498500977259 /* MediaPlayer.framework */; platformFilter = ios; };
-		B95307162639498E00977259 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B95307152639498E00977259 /* AudioToolbox.framework */; platformFilter = ios; };
-		B95307182639499800977259 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B95307172639499800977259 /* VideoToolbox.framework */; platformFilter = ios; };
-		B953071A263949A100977259 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9530719263949A100977259 /* OpenGLES.framework */; platformFilter = ios; };
-		B953071C263949AA00977259 /* MediaAccessibility.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B953071B263949AA00977259 /* MediaAccessibility.framework */; platformFilter = ios; };
-		B953071E263949B200977259 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B953071D263949B200977259 /* CoreVideo.framework */; platformFilter = ios; };
-		B9530720263949BA00977259 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B953071F263949BA00977259 /* AVFoundation.framework */; platformFilter = ios; };
-		B9530722263949C200977259 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9530721263949C200977259 /* CoreMedia.framework */; platformFilter = ios; };
-		B953073826395E6800977259 /* LCOpenSDKDynamic.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B953070F263943CD00977259 /* LCOpenSDKDynamic.framework */; platformFilter = ios; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		B953073926395E6800977259 /* ESVideoPhoneSDk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */; platformFilter = ios; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		B95311C6260C23620009B3DA /* ESCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B95311C4260C23620009B3DA /* ESCallDelegate.m */; platformFilter = ios; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		B9506A0D25F9EE3100F6FD4F /* CopyFiles */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "include/$(PRODUCT_NAME)";
-			dstSubfolderSpec = 10;
-			files = (
-				B953073826395E6800977259 /* LCOpenSDKDynamic.framework in CopyFiles */,
-				B953073926395E6800977259 /* ESVideoPhoneSDk.framework in CopyFiles */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		B9506A0F25F9EE3100F6FD4F /* libESVideoOnXamarin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libESVideoOnXamarin.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		B9506A1F25F9EE8800F6FD4F /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/lib/libbz2.tbd; sourceTree = DEVELOPER_DIR; };
-		B9506A2225F9EE9000F6FD4F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
-		B9506A2525F9EE9800F6FD4F /* libiconv.2.4.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.2.4.0.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/lib/libiconv.2.4.0.tbd; sourceTree = DEVELOPER_DIR; };
-		B9506A2925F9EEE900F6FD4F /* ESOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnIntercomViewController.h; sourceTree = "<group>"; };
-		B9506A2B25F9EEE900F6FD4F /* ESOnMonitorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnMonitorViewController.h; sourceTree = "<group>"; };
-		B9506A2C25F9EEE900F6FD4F /* ESOnMonitorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESOnMonitorViewController.m; sourceTree = "<group>"; };
-		B9506A2E25F9EEE900F6FD4F /* ESOnIntercomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESOnIntercomViewController.m; sourceTree = "<group>"; };
-		B9506A2F25F9EEE900F6FD4F /* ESVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESVideo.h; sourceTree = "<group>"; };
-		B9506A3125F9EEE900F6FD4F /* ESVideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESVideo.m; sourceTree = "<group>"; };
-		B9506A3225F9EEE900F6FD4F /* ESOnUtlis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnUtlis.h; sourceTree = "<group>"; };
-		B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ESVideoPhoneSDk.framework; path = Extern/ESVideoPhoneSDk.framework; sourceTree = "<group>"; };
-		B95307042639425200977259 /* LCOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnIntercomViewController.h; sourceTree = "<group>"; };
-		B95307052639425200977259 /* LCKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCKit.h; sourceTree = "<group>"; };
-		B95307062639425300977259 /* LCOnMonitorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnMonitorViewController.m; sourceTree = "<group>"; };
-		B95307072639425300977259 /* LCApiKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCApiKit.m; sourceTree = "<group>"; };
-		B95307082639425300977259 /* LCOnIntercomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnIntercomViewController.m; sourceTree = "<group>"; };
-		B95307092639425300977259 /* LCApiKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCApiKit.h; sourceTree = "<group>"; };
-		B953070A2639425300977259 /* LCOnMonitorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnMonitorViewController.h; sourceTree = "<group>"; };
-		B953070F263943CD00977259 /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LCOpenSDKDynamic.framework; path = Extern/LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
-		B95307112639497A00977259 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; };
-		B95307132639498500977259 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; };
-		B95307152639498E00977259 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
-		B95307172639499800977259 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/VideoToolbox.framework; sourceTree = DEVELOPER_DIR; };
-		B9530719263949A100977259 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
-		B953071B263949AA00977259 /* MediaAccessibility.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaAccessibility.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/MediaAccessibility.framework; sourceTree = DEVELOPER_DIR; };
-		B953071D263949B200977259 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/CoreVideo.framework; sourceTree = DEVELOPER_DIR; };
-		B953071F263949BA00977259 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
-		B9530721263949C200977259 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/CoreMedia.framework; sourceTree = DEVELOPER_DIR; };
-		B95311C4260C23620009B3DA /* ESCallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESCallDelegate.m; sourceTree = "<group>"; };
-		B95311C5260C23620009B3DA /* ESCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESCallDelegate.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		B9506A0C25F9EE3100F6FD4F /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				B9530722263949C200977259 /* CoreMedia.framework in Frameworks */,
-				B9530720263949BA00977259 /* AVFoundation.framework in Frameworks */,
-				B953071E263949B200977259 /* CoreVideo.framework in Frameworks */,
-				B953071C263949AA00977259 /* MediaAccessibility.framework in Frameworks */,
-				B953071A263949A100977259 /* OpenGLES.framework in Frameworks */,
-				B95307182639499800977259 /* VideoToolbox.framework in Frameworks */,
-				B95307162639498E00977259 /* AudioToolbox.framework in Frameworks */,
-				B95307142639498500977259 /* MediaPlayer.framework in Frameworks */,
-				B95307122639497A00977259 /* CoreAudio.framework in Frameworks */,
-				B9530710263943CD00977259 /* LCOpenSDKDynamic.framework in Frameworks */,
-				B9506A4725F9F0E300F6FD4F /* ESVideoPhoneSDk.framework in Frameworks */,
-				B9506A2625F9EE9800F6FD4F /* libiconv.2.4.0.tbd in Frameworks */,
-				B9506A2325F9EE9000F6FD4F /* libz.tbd in Frameworks */,
-				B9506A2025F9EE8800F6FD4F /* libbz2.tbd in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		B9506A0625F9EE3100F6FD4F = {
-			isa = PBXGroup;
-			children = (
-				B9506A1125F9EE3100F6FD4F /* ESVideoOnXamarin */,
-				B9506A1025F9EE3100F6FD4F /* Products */,
-				B9506A1C25F9EE7B00F6FD4F /* Frameworks */,
-			);
-			sourceTree = "<group>";
-		};
-		B9506A1025F9EE3100F6FD4F /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				B9506A0F25F9EE3100F6FD4F /* libESVideoOnXamarin.a */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		B9506A1125F9EE3100F6FD4F /* ESVideoOnXamarin */ = {
-			isa = PBXGroup;
-			children = (
-				B95307032639423A00977259 /* LCSDK */,
-				B95311C5260C23620009B3DA /* ESCallDelegate.h */,
-				B95311C4260C23620009B3DA /* ESCallDelegate.m */,
-				B9506A2925F9EEE900F6FD4F /* ESOnIntercomViewController.h */,
-				B9506A2E25F9EEE900F6FD4F /* ESOnIntercomViewController.m */,
-				B9506A2B25F9EEE900F6FD4F /* ESOnMonitorViewController.h */,
-				B9506A2C25F9EEE900F6FD4F /* ESOnMonitorViewController.m */,
-				B9506A3225F9EEE900F6FD4F /* ESOnUtlis.h */,
-				B9506A2F25F9EEE900F6FD4F /* ESVideo.h */,
-				B9506A3125F9EEE900F6FD4F /* ESVideo.m */,
-			);
-			path = ESVideoOnXamarin;
-			sourceTree = "<group>";
-		};
-		B9506A1C25F9EE7B00F6FD4F /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				B9530721263949C200977259 /* CoreMedia.framework */,
-				B953071F263949BA00977259 /* AVFoundation.framework */,
-				B953071D263949B200977259 /* CoreVideo.framework */,
-				B953071B263949AA00977259 /* MediaAccessibility.framework */,
-				B9530719263949A100977259 /* OpenGLES.framework */,
-				B95307172639499800977259 /* VideoToolbox.framework */,
-				B95307152639498E00977259 /* AudioToolbox.framework */,
-				B95307132639498500977259 /* MediaPlayer.framework */,
-				B95307112639497A00977259 /* CoreAudio.framework */,
-				B953070F263943CD00977259 /* LCOpenSDKDynamic.framework */,
-				B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */,
-				B9506A2525F9EE9800F6FD4F /* libiconv.2.4.0.tbd */,
-				B9506A2225F9EE9000F6FD4F /* libz.tbd */,
-				B9506A1F25F9EE8800F6FD4F /* libbz2.tbd */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		B95307032639423A00977259 /* LCSDK */ = {
-			isa = PBXGroup;
-			children = (
-				B95307092639425300977259 /* LCApiKit.h */,
-				B95307072639425300977259 /* LCApiKit.m */,
-				B95307052639425200977259 /* LCKit.h */,
-				B95307042639425200977259 /* LCOnIntercomViewController.h */,
-				B95307082639425300977259 /* LCOnIntercomViewController.m */,
-				B953070A2639425300977259 /* LCOnMonitorViewController.h */,
-				B95307062639425300977259 /* LCOnMonitorViewController.m */,
-			);
-			path = LCSDK;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		B9506A0E25F9EE3100F6FD4F /* ESVideoOnXamarin */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = B9506A1825F9EE3100F6FD4F /* Build configuration list for PBXNativeTarget "ESVideoOnXamarin" */;
-			buildPhases = (
-				B9506A0B25F9EE3100F6FD4F /* Sources */,
-				B9506A0C25F9EE3100F6FD4F /* Frameworks */,
-				B9506A0D25F9EE3100F6FD4F /* CopyFiles */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = ESVideoOnXamarin;
-			productName = ESVideoOnXamarin;
-			productReference = B9506A0F25F9EE3100F6FD4F /* libESVideoOnXamarin.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		B9506A0725F9EE3100F6FD4F /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 1220;
-				TargetAttributes = {
-					B9506A0E25F9EE3100F6FD4F = {
-						CreatedOnToolsVersion = 12.2;
-					};
-				};
-			};
-			buildConfigurationList = B9506A0A25F9EE3100F6FD4F /* Build configuration list for PBXProject "ESVideoOnXamarin" */;
-			compatibilityVersion = "Xcode 9.3";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = B9506A0625F9EE3100F6FD4F;
-			productRefGroup = B9506A1025F9EE3100F6FD4F /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				B9506A0E25F9EE3100F6FD4F /* ESVideoOnXamarin */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXSourcesBuildPhase section */
-		B9506A0B25F9EE3100F6FD4F /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				B95311C6260C23620009B3DA /* ESCallDelegate.m in Sources */,
-				B9506A3625F9EEE900F6FD4F /* ESOnIntercomViewController.m in Sources */,
-				B953070B2639425300977259 /* LCOnMonitorViewController.m in Sources */,
-				B9506A3725F9EEE900F6FD4F /* ESVideo.m in Sources */,
-				B953070D2639425300977259 /* LCOnIntercomViewController.m in Sources */,
-				B953070C2639425300977259 /* LCApiKit.m in Sources */,
-				B9506A3425F9EEE900F6FD4F /* ESOnMonitorViewController.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
-		B9506A1625F9EE3100F6FD4F /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
-				MTL_FAST_MATH = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-			};
-			name = Debug;
-		};
-		B9506A1725F9EE3100F6FD4F /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				MTL_FAST_MATH = YES;
-				SDKROOT = iphoneos;
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-		B9506A1925F9EE3100F6FD4F /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD)";
-				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = 259RU5K4MU;
-				ENABLE_BITCODE = NO;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(PROJECT_DIR)/Extern",
-				);
-				HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
-				);
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(PROJECT_DIR)/Extern/ESVideoPhoneSDk.framework",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework",
-				);
-				OTHER_LDFLAGS = "-Wl,-all_load";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SKIP_INSTALL = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
-		B9506A1A25F9EE3100F6FD4F /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = arm64;
-				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = 259RU5K4MU;
-				ENABLE_BITCODE = NO;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(PROJECT_DIR)/Extern",
-				);
-				HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
-				);
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(PROJECT_DIR)/Extern/ESVideoPhoneSDk.framework",
-					"$(PROJECT_DIR)/Extern/LCOpenSDKDynamic.framework",
-				);
-				ONLY_ACTIVE_ARCH = NO;
-				OTHER_LDFLAGS = "-Wl,-all_load";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SKIP_INSTALL = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		B9506A0A25F9EE3100F6FD4F /* Build configuration list for PBXProject "ESVideoOnXamarin" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				B9506A1625F9EE3100F6FD4F /* Debug */,
-				B9506A1725F9EE3100F6FD4F /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		B9506A1825F9EE3100F6FD4F /* Build configuration list for PBXNativeTarget "ESVideoOnXamarin" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				B9506A1925F9EE3100F6FD4F /* Debug */,
-				B9506A1A25F9EE3100F6FD4F /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = B9506A0725F9EE3100F6FD4F /* Project object */;
-}
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/xcshareddata/xcschemes/ESVideoOnXamarin.xcscheme b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/xcshareddata/xcschemes/ESVideoOnXamarin.xcscheme
deleted file mode 100644
index 6dfe5f0..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/xcshareddata/xcschemes/ESVideoOnXamarin.xcscheme
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1220"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "B9506A0E25F9EE3100F6FD4F"
-               BuildableName = "libESVideoOnXamarin.a"
-               BlueprintName = "ESVideoOnXamarin"
-               ReferencedContainer = "container:ESVideoOnXamarin.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Release"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "B9506A0E25F9EE3100F6FD4F"
-            BuildableName = "libESVideoOnXamarin.a"
-            BlueprintName = "ESVideoOnXamarin"
-            ReferencedContainer = "container:ESVideoOnXamarin.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.m
deleted file mode 100644
index aba4e7d..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.m
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-//  ESCallDelegate.m
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import "ESCallDelegate.h"
-
-@implementation ESCallDelegate
-
-@end
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.h b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.h
deleted file mode 100644
index ad5c4e8..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-//  ESOnIntercomViewController.h
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-#import "ESCallDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ESOnIntercomViewController : UIViewController
-
-@property (nonatomic,strong) NSString               *mESVideoID;
-@property (nonatomic,assign) int                    mESRoomID;//浣忔埛鐨勬埧闂碔D
-@property (nonatomic,strong) NSString               *roomName;
-@property (nonatomic,strong) NSString               *deviceName;
-
-#pragma mark ESCallDelegate
-/**
- 涓版灄浜嬩欢浠g悊
- */
-@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
-
-#pragma mark 瀵瑰鎺ュ彛鏂规硶
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.m
deleted file mode 100644
index ce4c850..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.m
+++ /dev/null
@@ -1,1194 +0,0 @@
-//
-//  ESOnIntercomViewController.m
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import "ESOnIntercomViewController.h"
-#import "ESOnUtlis.h"
-#import <AVFoundation/AVFoundation.h>
-#import <ESVideoPhoneSDk/ESVideoPhone.h>
-#import <ESVideoPhoneSDk/ESError.h>
-//#import "AudioSessionHelper.h"
-#import <Photos/Photos.h>
-#import <AudioToolbox/AudioToolbox.h>
-#import "ESVideo.h"
-
-
-
-@interface ESOnIntercomViewController ()<ESVideoPhoneDelegate>
-
-//@property (nonatomic,strong) AudioSessionHelper    *sessionHelper;
-@property (nonatomic,strong) ESVideoPhone          *es;
-@property (nonatomic,assign) BOOL                  playing;
-@property (nonatomic,assign) BOOL                  isInterrupt;
-@property (nonatomic,assign) BOOL                  isSpeaking;
-@property (nonatomic,strong) UIImage               *snapImage; //鎴浘
-
-@property (nonatomic, strong) UIButton *backButton;  //
-@property (nonatomic, strong) UILabel *titleUILabel;  //
-@property (nonatomic, strong) UIView *centerView;  //鍐呭鑳屾櫙View
-@property (nonatomic, strong) UIView *videoView;
-
-@property (nonatomic, strong) UIView *unlockView;
-@property (nonatomic, strong) UIButton *screenshotImgBtn;  //鎴浘
-@property (nonatomic, strong) UIButton *unlockImgBtn;  //寮�閿�
-
-
-@property (nonatomic, strong) UIButton *hangUpImgBtn;//鎸傛柇鎸夐挳
-@property (nonatomic, strong) UIButton *hangUpTextBtn;
-
-@property (nonatomic, strong) UIButton *answerImgBtn;//鎺ュ惉鎸夐挳
-@property (nonatomic, strong) UIButton *answerTextBtn;
-
-@property (nonatomic, strong) UIButton *calltimeBtn; //閫氳瘽鏃堕棿鎸夐挳
-
-//瀹氭椂鍣�
-@property (nonatomic,strong) dispatch_source_t countdownTimer;
-@property (nonatomic,strong) dispatch_source_t openDoorTimer;
-@property (nonatomic, assign) int openDoorTimeout;
-@property (nonatomic, assign) int callTimeout;
-
-
-@end
-
-@implementation ESOnIntercomViewController{
-    
-    BOOL isAccessAudio;
-    BOOL isAccessVideo;
-    BOOL isBackGround;
-    BOOL iSVideoNotDetermined;
-    BOOL iSAudioNotDetermined;
-    BOOL isAnswer;//鏄惁宸茬粡鐐瑰嚮鎺ュ惉杩囦簡
-    
-    NSString * tipStr;
-    NSString * okStr;
-    NSString * saveToTheAlbumsStr;
-    NSString * operationFailedStr;
-    NSString * refuseStr;
-    NSString * answerStr;
-    NSString * unlockSuccessfullyStr;
-    NSString * callingStr;
-    NSString * hangUpStr;
-    //    int openDoorTimeout;
-    //鍏ㄥ眬鍙橀噺
-    SystemSoundID sound;
-    
-    CGFloat Height66;
-}
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    self.view.backgroundColor = UIColor.whiteColor;
-    Height66 = GetRealWidth(66);
-    
-    [self initLlanguage];
-    [self initTopBarView];
-    [self initCentetView];
-    [self initData];
-    //    [self setAnswerBtnEnable:NO];
-    [self initESVideo];
-    //寮�濮嬪弽鍛�
-    [self StartReverseCall];
-    [self ShowCalltimeBtn:callingStr];
-    // Do any additional setup after loading the view.
-}
-
-
--(void)initLlanguage{
-    NSString *languageName = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
-    
-    // 绠�浣撲腑鏂�
-    if ([languageName rangeOfString:@"zh-Hans"].location != NSNotFound) {
-        tipStr = @"鎻愮ず";
-        okStr = @"纭";
-        saveToTheAlbumsStr = @"宸蹭繚瀛樿嚦鎵嬫満鐩稿唽.";
-        operationFailedStr = @"鎿嶄綔澶辫触";
-        refuseStr = @"鎷掔粷";
-        answerStr = @"鎺ュ惉";
-        hangUpStr = @"鎸傛柇";
-        unlockSuccessfullyStr = @"寮�閿佹垚鍔�";
-        callingStr = @"鏉ョ數涓�...";
-    }else{
-        tipStr = @"Prompt";
-        okStr = @"OK";
-        saveToTheAlbumsStr = @"Saved to the albums.";
-        operationFailedStr = @"Operation failed.";
-        refuseStr = @"Refuse";
-        answerStr = @"Answer";
-        hangUpStr = @"Hang up";
-        unlockSuccessfullyStr = @"Unlock successfully";
-        callingStr = @"Incoming call";
-        
-    }
-}
-
-
-
-- (void)initTopBarView {
-    UIView *TopView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, APP_TOP_BAR_HEIGHT)];
-    TopView.backgroundColor = HEXCOLORA(0xF7F7F7,1.0);
-    //    [TopView addSubview:self.backButton];
-    [TopView addSubview:self.titleUILabel];
-    [self.view addSubview:TopView];
-    TopView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-    TopView.layer.shadowOffset = CGSizeMake(0,0.5);
-    TopView.layer.shadowOpacity = 1;
-    TopView.layer.shadowRadius = 0;
-    
-}
-
-- (UIButton *)backButton{
-    if (_backButton == nil) {
-        _backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_STATUS_BAR_HEIGHT, 44, 44)];
-        [_backButton setImage:[UIImage imageNamed:@"ic_esvideo_on_back"] forState:UIControlStateNormal];
-        _backButton.imageEdgeInsets = UIEdgeInsetsMake(12,12,12,12);
-        [_backButton.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
-    }
-    return _backButton;
-}
-
--(void)backAction{
-    [self.navigationController popViewControllerAnimated:true];
-    //    [self dismissViewControllerAnimated:YES completion:NULL];
-    
-}
-
--(UILabel *)titleUILabel{
-    if (_titleUILabel == Nil) {
-        _titleUILabel = [[UILabel alloc] initWithFrame:CGRectMake(90, APP_STATUS_BAR_HEIGHT, self.view.frame.size.width - 180, 44)];
-        _titleUILabel.font = [UIFont fontWithName:APP_UIFont_BOLD size:18.0];
-        _titleUILabel.textColor = TextColor;
-        _titleUILabel.text = @"";
-        _titleUILabel.textAlignment = NSTextAlignmentCenter;
-    }
-    return _titleUILabel;
-}
-
-- (void)initCentetView {
-    [self.view addSubview:self.centerView];
-    //    [self.centerView addSubview:self.collectButton];
-    [self.centerView addSubview:self.videoView];
-    [self.centerView addSubview:self.unlockView];
-    [self.unlockView addSubview:self.screenshotImgBtn];
-    [self.unlockView addSubview:self.unlockImgBtn];
-    [self.centerView addSubview:self.hangUpImgBtn];
-    [self.centerView addSubview:self.hangUpTextBtn];
-    [self.centerView addSubview:self.answerImgBtn];
-    [self.centerView addSubview:self.answerTextBtn];
-    [self.centerView addSubview:self.calltimeBtn];
-}
-
-- (UIView *)centerView{
-    if (_centerView == nil) {
-        _centerView = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_TOP_BAR_HEIGHT, APP_SCREEN_WIDTH, APP_VISIBLE_HEIGHT)];
-        _centerView.backgroundColor = UIColor.whiteColor;
-    }
-    return _centerView;
-}
-
--(void)setRadiusWithView:(UIView *)mView{
-    //椤堕儴鍦嗚
-    UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
-    if (@available(iOS 11.0, *)) {
-        mView.layer.cornerRadius = 20;
-        mView.layer.maskedCorners =  (CACornerMask)corners;
-    }else{
-        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mView.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(20,20)];
-        //鍒涘缓 layer
-        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
-        maskLayer.frame = mView.bounds;
-        //璧嬪��
-        maskLayer.path = maskPath.CGPath;
-        mView.layer.mask = maskLayer;
-    }
-}
-
--(UIView *)videoView{
-    if (_videoView == Nil) {
-        _videoView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, GetRealWidth(210))];
-        _videoView.backgroundColor = UIColor.lightGrayColor;
-        _videoView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-        _videoView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _videoView.layer.shadowOpacity = 1;
-        _videoView.layer.shadowRadius = 0;
-    }
-    return _videoView;
-}
-
-
-- (UIView *)unlockView{
-    if (_unlockView == nil) {
-        _unlockView = [[UIView alloc] initWithFrame:CGRectMake(0, GetRealWidth(210), APP_SCREEN_WIDTH, GetRealWidth(72))];
-        _unlockView.backgroundColor = HEXCOLORA(0x232323, 1.0);
-        _unlockView.layer.backgroundColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0].CGColor;
-        _unlockView.layer.shadowColor = [UIColor colorWithRed:204/255.0 green:204/255.0 blue:204/255.0 alpha:0.4].CGColor;
-        _unlockView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _unlockView.layer.shadowOpacity = 1;
-        _unlockView.layer.shadowRadius = 0;
-    }
-    return _unlockView;
-}
-
-- (UIButton *)screenshotImgBtn{
-    if (_screenshotImgBtn == nil) {
-        _screenshotImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(44), GetRealWidth(44))];
-        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-        //        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateSelected];
-        [_screenshotImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotImgBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealWidth(38));
-    }
-    return _screenshotImgBtn;
-}
-
--(void)screenshotDownAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateNormal];
-}
-
--(void)screenshotAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-    //鎴浘
-    if(_es){
-        [_es onSnap];
-    }
-}
-
-- (UIButton *)unlockImgBtn{
-    if (_unlockImgBtn == nil) {
-        _unlockImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, GetRealWidth(44), GetRealWidth(44))];
-        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-        //        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateSelected];
-        [_unlockImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_unlockImgBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_unlockImgBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockImgBtn.adjustsImageWhenHighlighted = NO;
-        _unlockImgBtn.center = CGPointMake((APP_SCREEN_WIDTH/4) * 3, GetRealWidth(38));
-    }
-    return _unlockImgBtn;
-}
-
--(void)unlockDownAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateNormal];
-    
-}
-
--(void)unlockAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    //寮�閿�
-    if(_es){
-        [_es openTheDoorWithRoomid:_mESRoomID];
-    }
-    
-}
-
-#pragma 鎸傛柇鍜屽紑閿�
-- (UIButton *)hangUpImgBtn{
-    if (_hangUpImgBtn == nil) {
-        _hangUpImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_hangUpImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_hangup"] forState:UIControlStateNormal];
-        //        [_hangUpImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_hangup"] forState:UIControlStateSelected];
-        [_hangUpImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_hangUpImgBtn addTarget:self action:@selector(hangUpAction) forControlEvents:UIControlEventTouchUpInside];
-        _hangUpImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealHeight(452) + Height66/2);
-    }
-    return _hangUpImgBtn;
-}
-
-//鎸傛柇鎸夐挳浜嬩欢
--(void)hangUpAction{
-    //1.鍥炶皟浜嬩欢
-    if(self.mESCallDelegate != NULL){
-        if(isAnswer){
-            //濡傛灉涔嬪墠宸茬粡鎺ュ惉浜嗭紝鍥炶皟鏄寕鏂�
-            [self.mESCallDelegate onHangUpAction:_callTimeout];
-        }else{
-            //濡傛灉涔嬪墠娌℃帴鍚簡锛屽洖璋冩槸鎷掓帴
-            [self.mESCallDelegate onRejectCallAction];
-        }
-    }
-    //2.椤甸潰鍏抽棴
-    [self backAction];
-}
-
-- (UIButton *)hangUpTextBtn{
-    if (_hangUpTextBtn == nil) {
-        _hangUpTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_hangUpTextBtn setTitle:@"鎷掔粷" forState:UIControlStateNormal];
-        _hangUpTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        _hangUpTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        [_hangUpTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        [_hangUpTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_hangUpTextBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside];
-        _hangUpTextBtn.center = CGPointMake(_hangUpImgBtn.center.x, GetRealHeight(530));
-        
-    }
-    return _hangUpTextBtn;
-}
-
-- (UIButton *)answerImgBtn{
-    if (_answerImgBtn == nil) {
-        _answerImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_answerImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_answer"] forState:UIControlStateNormal];
-        //        [_answerImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_answer"] forState:UIControlStateSelected];
-        [_answerImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_answerImgBtn addTarget:self action:@selector(answerIAction) forControlEvents:UIControlEventTouchUpInside];
-        
-        _answerImgBtn.center = CGPointMake((APP_SCREEN_WIDTH/4)*3, GetRealHeight(452) + Height66/2);
-    }
-    return _answerImgBtn;
-}
-
--(void)answerIAction{
-    [self stopPlaySystemSound];
-    if(_es){
-        //        [self stopPlaySystemSound];
-        [_es onAccept];
-    }else{
-        NSLog(@"ES鍒濆鍖栧け璐�");
-    }
-    
-    _answerImgBtn.hidden = YES;
-    _answerTextBtn.hidden = YES;
-    
-    //鎸傛柇鎸夐挳绉诲姩涓棿
-    _hangUpImgBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, _hangUpImgBtn.center.y);
-    _hangUpTextBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, _hangUpTextBtn.center.y);
-    
-    [_hangUpTextBtn setTitle:hangUpStr forState:UIControlStateNormal];
-    //寮�濮嬭鏃�
-    _callTimeout = 0;
-    [self startCountdown];
-    isAnswer = YES;
-    
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onAnswerAction];
-    }
-    
-}
-
--(void)setAnswerBtnEnable:(BOOL)ISEnable{
-    [_answerImgBtn setEnabled:ISEnable];
-    [_answerTextBtn setEnabled:ISEnable];
-}
-
-- (UIButton *)answerTextBtn{
-    if (_answerTextBtn == nil) {
-        _answerTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_answerTextBtn setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-        _answerTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _answerTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        //        _unlockTextBtn.titleLabel.textColor = TextColor;
-        [_answerTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        [_answerTextBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
-        [_answerTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_answerTextBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside];
-        _answerTextBtn.center = CGPointMake(_answerImgBtn.center.x, GetRealHeight(530));
-    }
-    return _answerTextBtn;
-}
-
-- (UIButton *)calltimeBtn{
-    if (_calltimeBtn == nil) {
-        _calltimeBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(40))];
-        _calltimeBtn.backgroundColor = HEXCOLORA(0x000000, 0.6);
-        [_calltimeBtn setTitle:@"00:00" forState:UIControlStateNormal];
-        _calltimeBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _calltimeBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        [_calltimeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
-        _calltimeBtn.hidden = YES;
-        _calltimeBtn.layer.cornerRadius = 12;
-        _calltimeBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, GetRealWidth(340));
-    }
-    return _calltimeBtn;
-}
-
-
-
-
--(void)ShowTime:(int)nowTime {
-    if(_calltimeBtn.hidden) _calltimeBtn.hidden = NO;
-    NSString *timeStr = [self timeFormatted:nowTime];
-    [self setCalltimeButtonText:timeStr isTime:YES];
-}
-
--(void)ShowCalltimeBtn:(NSString*) mesStr  {
-    if(_calltimeBtn.hidden) _calltimeBtn.hidden = NO;
-    
-    [self setCalltimeButtonText:mesStr isTime:NO];
-    
-    
-}
-
-/*
- 鏍规嵁鏂囧瓧璋冩暣鎸夐挳瀹�
- */
--(void)setCalltimeButtonText:(NSString*) mesStr isTime:(BOOL)isTime
-{
-    [_calltimeBtn setTitle:mesStr forState:UIControlStateNormal];
-    if(isTime){
-        _calltimeBtn.frame = CGRectMake(0, 0, GetRealWidth(80), GetRealWidth(30));
-    }else{
-        _calltimeBtn.frame = CGRectMake(0, 0, GetRealWidth(115), GetRealWidth(30));
-    }
-    _calltimeBtn.center = CGPointMake(APP_SCREEN_WIDTH/2, GetRealWidth(340));
-}
-
-
-- (NSString *)timeFormatted:(int)totalSeconds
-{
-    int seconds = totalSeconds % 60;
-    int minutes = (totalSeconds / 60);
-    return [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];
-    
-}
-
-- (int *)getTextWidth:(UIButton*) btn
-{
-    int textWidth = 0;
-    //   聽 CGSize size = [btn.titleLabel.textsizeWithFont:[UIFontboldSystemFontOfSize:15]constrainedToSize:contentMaxSizes lineBreakMode:UILineBreakModeCharacterWrap];
-    //    textWidth = (int)fontSize.Width;
-    return textWidth;
-}
-
-
-
-/** 寮�鍚�掕鏃� */
-- (void)startCountdown {
-    
-    if (_callTimeout > 100) {
-        return;
-    }
-    _callTimeout = 0;
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _countdownTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_countdownTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_countdownTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.callTimeout >= 100 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.countdownTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                NSLog(@"瓒呮椂");
-                [weakSelf_AT backAction];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.callTimeout++;
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT ShowTime:weakSelf_AT.callTimeout];
-            });
-            
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_countdownTimer);
-    
-}
-
-#pragma 寮�閿佹垚鍔�
--(void)setOpenDoorSuccess{
-    [self setUnlock:NO];
-    _openDoorTimeout = 0;
-    [self startOpenDoorCountdown];
-    [self showUIAlertView:unlockSuccessfullyStr];
-    // 寮�閿佹垚鍔熷洖璋�
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onUnlockAction];
-    }
-}
-
--(void)setUnlock:(BOOL)ISEnable{
-    [_unlockImgBtn setEnabled:ISEnable];
-}
-
-
-
-/** 寮�鍚�掕鏃� */
-- (void)startOpenDoorCountdown {
-    
-    if (_openDoorTimeout > 20) {
-        return;
-    }
-    
-    _openDoorTimeout = 0;
-    
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _openDoorTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_openDoorTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_openDoorTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.openDoorTimeout >= 20 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.openDoorTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT setUnlock:YES];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.openDoorTimeout++;
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_openDoorTimer);
-    
-}
-
-
-
-#pragma SDK鍙瀵硅 鍔熻兘閮ㄥ垎
--(void)initESVideo{
-    _es = ESVideo.shareInstance.es;
-    //鍒濆鍖栦腑鏂紝杩涘叆鍚庡彴鐨則ag
-    
-    
-    _playing = NO;
-    _isSpeaking = NO;
-    self.isInterrupt = NO;
-    isBackGround = NO;
-    
-    
-    
-    [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    if (isAccessAudio) {
-        ImageCallback snapImageCallback = ^(UIImage *image){
-            //block鏄湪鍒嗙嚎绋嬩腑璋冪敤鐨勶紝杩欓噷瑕佹斁鍒颁富绾跨▼
-            dispatch_async(dispatch_get_main_queue(), ^{
-                self->_snapImage = image;
-                [self saveImageToPhotosAlbum:image];
-            });
-        };
-        //闂ㄥ彛鏈轰細鏈夎棰戠殑闀垮楂橈紝鏄浐瀹氱殑锛堟殏鏃惰繕涓嶇‘瀹氾級
-        //        _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame:CGRectMake(0, 57, APP_SCREEN_WIDTH, 211) delegate:self imagecallBack:snapImageCallback];
-        if (_es) {
-            //鍒ゆ柇瑙嗛娓叉煋鏄惁鍒濆鍖栨垚鍔燂紝濡傛灉澶辫触浼氳蛋ESVideoPhoneDelegate鏂规硶
-            if (_es.showView) {
-                ESVideo.shareInstance.snapImageCallback = snapImageCallback;
-                _es.delegate = self;
-                _es.showView.backgroundColor = [UIColor whiteColor];
-                [self.videoView addSubview:_es.showView];
-                _es.showView.hidden = YES;
-            }
-        }else{
-            NSLog(@"ESVideoPhone 鍒濆鍖栧け璐�");
-            return;
-        }
-        // 鍒濆鍖朅udio閲囬泦Unit
-        if(![_es initAudioCaptureSession]){
-            return;
-        }
-    }else{
-        //闊抽娌℃湁鏉冮檺寤鸿涓嶈鍙戣捣閫氳瘽
-        return;
-    }
-    //鍒濆鍖栬棰戦噰闆咰apture
-//    [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//    if (isAccessVideo) {
-//        if(![_es initVideoCaptureSession]){
-//            NSLog(@"VideoCaptureSession 鍒濆鍖栧け璐�");
-//        }
-//    }
-//    //鍒濆鍖朅udioSession
-//    _sessionHelper = [[AudioSessionHelper alloc]init];
-//    [_sessionHelper setAudioSession];
-    //娣诲姞杩涘叆鍚庡彴锛屼腑鏂瓑閫氱煡
-    [self addObservers];
-    
-    
-}
-
--(void)initData{
-    _titleUILabel.text = _deviceName;
-    [_hangUpTextBtn setTitle:refuseStr forState:UIControlStateNormal];
-    [_answerTextBtn setTitle:answerStr forState:UIControlStateNormal];
-
-}
-
-/**
- 寮�濮嬪弽鍛�
- */
--(void)StartReverseCall{
-    [self startPlaySystemSound];
-    if(_es){
-        NSString *param = [NSString stringWithFormat:@"address=%@,tag=mobile://123,",_mESVideoID];
-        //NSLog(@"%@", param);
-        [_es onReverseCall:param];
-        
-    }else{
-        NSLog(@"ES鍒濆鍖栧け璐�");
-    }
-    
-    
-}
-
-////鎺ュ惉
-//-(void)onAccept{
-//    if(_es){
-//        [_es onAccept];
-//    }else{
-//        NSLog(@"ES鍒濆鍖栧け璐�");
-//    }
-//
-//}
-
-
--(NSString *)getCurrentdateInterval
-{
-    NSDate *datenow = [NSDate date];
-    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
-    return timeSp;
-}
-
-
--(void)showUIAlertView:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleCancel handler:nil]];
-    [self presentViewController:alertController animated:YES completion:nil];
-    
-    //    UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:tipStr message:mes delegate:self cancelButtonTitle:okStr otherButtonTitles:nil, nil];
-    //    [alertView1 show];
-    
-}
-
--(void)showUIAlertViewWithBack:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self backAction];
-    }]];
-    
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-
-#pragma viewDidAppear
--(void)viewDidAppear:(BOOL)animated{
-    //杩欎釜鏂规硶璇锋牴鎹瓵pp鐨勫叿浣撴儏鍐佃皟鐢�
-    //鍦╲iewDidLoad涓� 璋冪敤requestAccessForAVMediaType: 鏄负浜嗚妭绾﹀垵濮嬪寲鐨勬椂闂�
-    //鍦╲iewDidAppear涓皟鐢╮equestAccessForAVMediaType: 鏄负浜嗗脊鍑烘彁绀烘墦寮�鏉冮檺鐨凙lert
-    //娴嬭瘯鐨勬椂鍊欏彂鐜板涓嬫儏鍐碉細濡傛灉鍙妸鎺堟潈鏂规硶鏀惧埌ViewDidAppear鏂规硶涓鐞嗭紝濡傛灉娌℃湁鎺堟潈鍦ㄥ垵濮嬪寲閲囬泦鍣ㄦ椂浼氬け璐ャ�傚悓鏍稟lertView浼氬洜涓篤iew娌℃湁didLoad鑰屽鑷磒resent涓嶅嚭鏉�
-//    if (!isAccessVideo || !isAccessAudio) {
-//        [self requestAccessForAVMedia];
-//    }
-//
-    if (!isAccessAudio) {
-        [self requestAccessForAVMedia];
-    }
-}
--(void)setIsInterrupt:(BOOL)isInterrupt{
-    if (_es) {
-        _es.isInterrupt = isInterrupt;
-    }
-}
--(void)viewWillDisappear:(BOOL)animated{
-    [super viewWillDisappear:animated];
-    [self stopPlaySystemSound];
-    //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽��
-    if(_es){
-        [_es onHangup];
-        [_es onStopCapture];
-        [_es stopTalk];
-        
-        _es.delegate = nil;
-        ESVideo.shareInstance.snapImageCallback = nil;
-        
-        
-    }
-    //    [_es freeSubClass];
-}
--(void)dealloc{
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
-    //    [_es freeSubClass];
-    
-    if(_openDoorTimer){
-        dispatch_source_cancel(_openDoorTimer);
-        _openDoorTimer = nil; // OK
-    }
-    if(_countdownTimer){
-        dispatch_source_cancel(_countdownTimer);
-        _countdownTimer = nil; // OK
-        
-    }
-    NSLog(@"==============dealloc");
-    
-    
-}
-
-#pragma mark ESVideoPhoneDelegate
-//瑙嗛閫氳瘽鐨勭姸鎬佷唬鐞嗕簨浠讹紝phoneEvent涓鸿繑鍥炵殑娑堟伅閲岄潰鍖呭惈event鐘舵�佷笌涓巈vent鐩稿叧鐨勬暟鎹�
--(void)getPhoneEvent_UI:(NSString *)phoneEvent{
-    NSLog(@"浜嬩欢%@", phoneEvent);
-    NSArray *strArray = [phoneEvent componentsSeparatedByString:@"\r\n"];
-    NSArray *eventArray = [strArray.firstObject componentsSeparatedByString:@"="];
-    NSString *phoneEventStr = eventArray.lastObject;
-    
-    if([phoneEventStr isEqual:@"EVT_Ringing"]){
-        _es.showView.hidden = NO;
-        //鍙嶅懠鎴愬姛 鍏佽鎺ュ惉  鐪嬮渶姹傛槸鍚﹂渶瑕佹挱鏀鹃搩澹板拰闇囧姩
-        [self setAnswerBtnEnable:YES];
-        
-        //           [_mCallOrAccept setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-    }else if([phoneEventStr isEqual:@"EVT_StartStream"]){
-        
-    } else if([phoneEventStr isEqual:@"EVT_StopStream"]){
-        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-    }else if([phoneEventStr isEqual:@"EVT_Connected"]){
-        
-        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-    }else if([phoneEventStr  isEqual:@"EVT_HangUp"]){
-        [self showUIAlertViewWithBack:@"宸叉寕鏂�"];
-        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-    }else if([phoneEventStr  isEqual:@"EVT_P2POnlineStatusChanged"]){
-        //EVT_P2PStarted(p2p鍒濆鍖朞K锛屽彲浠ヨ繛鎺�),EVT_P2POnlineStatusChangedonline=1
-        //p2p鍒濆鍖栨垚鍔�,鎵嬫満绔洰鍓嶆病鏈夎繖涓洖璋冧簡
-        //_mCallOrAccept.enabled = YES;
-        //_monitorBtn.enabled = YES;
-    }else if([phoneEventStr  isEqual:@"EVT_RECV_CUSTOM_DATA"]){
-        //寮�闂ㄧ殑缁撴灉浠庤繖閲岃繑鍥�
-        NSString *baseStr = [strArray[1] substringFromIndex:5];
-        NSData *data = [[NSData alloc]initWithBase64EncodedString:baseStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
-        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
-        NSInteger status = [[dic valueForKey:@"status"]integerValue];
-        if(status && status == 1){
-            NSLog(@"寮�闂ㄦ垚鍔�");
-            [self setOpenDoorSuccess];
-        }else{
-            NSLog(@"寮�闂ㄥけ璐�");
-        }
-    }
-}
-
--(void)getAErrorForESVideoPhone:(NSString *)errorStr type:(NSUInteger)errortype{
-    NSLog(@"閿欒%@", errorStr);
-    //娌℃湁鎺堟潈
-    if (errortype == LMPVideoCaptureErrorNotAuthorized) {
-        NSLog(@"閿欒%@", errorStr);
-    }
-}
-#pragma mark AudioSession涓嶯otifications澶勭悊
-
-- (void) addObservers
-{
-    //    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name: UIKeyboardWillChangeFrameNotification  object: nil];
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRuntimeError:) name:AVCaptureSessionRuntimeErrorNotification object:nil];
-    
-    //isAccessVideo锛屽鏋淎VCaptureSession娌℃湁new鍑烘潵涓嶄細鏀跺埌閫氱煡
-    if (isAccessVideo) {
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionWasInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:nil];
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInterruptionEnded:) name:AVCaptureSessionInterruptionEndedNotification object:nil];
-    }else{
-        //object:涓簄il 鍙兘涓嶄細瑙﹀彂閫氱煡
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:)
-                                                     name:AVAudioSessionInterruptionNotification object:[AVAudioSession
-                                                                                                         sharedInstance]];
-    }
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChangeListenerCallback:)   name:AVAudioSessionRouteChangeNotification object:nil];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
-}
-
-- (void) sessionRuntimeError:(NSNotification*)notification
-{
-    NSError* error = notification.userInfo[AVCaptureSessionErrorKey];
-    NSLog(@"Capture session runtime error: %@", error);
-    
-    // If media services were reset, and the last start succeeded, restart the session.
-    if (error.code == AVErrorMediaServicesWereReset) {
-        [_es onStopCapture];
-        [_es stopTalk];
-    }
-}
-
-- (void)handleInterruption:(NSNotification *)notification
-{
-    NSUInteger interruptionType = [[[notification userInfo]
-                                    objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
-    
-    if (AVAudioSessionInterruptionTypeBegan == interruptionType)
-    {
-        if (isBackGround) {
-            return;
-        }
-        [_es stopTalk];
-    }
-    else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
-    {
-        if (self.isInterrupt == NO) {
-            return;
-        }else{
-            //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-            [self InterruptionEndedAVAudioSessionSetActiveYES];
-        }
-    }
-}
-
-//AVAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-- (void) sessionWasInterrupted:(NSNotification*)notification
-{
-    if (_playing == YES) {
-        self.isInterrupt = YES;
-        //AVCaptureSessionInterruptionReason
-        if (@available(iOS 9.0, *)) {
-            NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue]; //鐢佃瘽涓柇鏄�1
-            NSLog(@"Capture session was interrupted with reason %ld", (long)reason);
-            
-            //闊抽纭欢鏆傛椂涓嶅彲鐢ㄨ�岄�犳垚鐨勪腑鏂紝渚嬪锛岀數璇濇垨璀︽姤銆�
-            if (reason == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient ||
-                reason == AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient) {
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient");
-                
-                //VAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-                //Audio Queue Services, I/O audio unit
-                [_es onStopCapture];
-                [_es stopTalk];
-                /*
-                 NSError *error = nil;
-                 [[AVAudioSession sharedInstance] setActive:NO error:&error];
-                 if (error) {
-                 NSLog(@"sessionWasInterruptedSetActiveNO error:%@", error);
-                 }
-                 */
-            }else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground){
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground");
-                //濡傛灉鏄數璇濅腑鏂紝涓嶄細璧拌繘鍏ュ悗鍙扮殑閫氱煡锛岃繘鍏ュ悗鍙板啀鍒囨崲鍒板墠鍙拌繖閲屾槸涓嶇敤澶勭悊鐨�
-                if (isBackGround) {
-                    return;
-                }
-                [_es onStopCapture];
-                [_es stopTalk];
-            }
-            //澶氫釜搴旂敤绋嬪簭璧勬簮浜夌敤璐ㄩ噺涓嬮檷銆傚彧鏈夊綋搴旂敤绋嬪簭鍗犳嵁鍏ㄥ睆鏃讹紝浼氳瘽鎵嶈兘杩愯銆�
-            else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps) {
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps");
-                // Fade-in a label to inform the user that the camera is unavailable.
-            }else if (@available(iOS 11.1, *)) {
-                if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure){
-                    NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure");
-                }
-            } else {
-                // Fallback on earlier versions
-            }
-        } else {
-            if (isBackGround) {
-                return;
-            }
-            [_es onStopCapture];
-            [_es stopTalk];
-        }
-    }
-}
-
-//杩欎釜閫氱煡鍙兘浼氳幏鍙栦笉鍒帮紝
-- (void) sessionInterruptionEnded:(NSNotification*)notification
-{
-    //    NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue];
-    NSLog(@"Capture session interruption ended");
-    if (self.isInterrupt == NO) {
-        return;
-    }else{
-        //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-        [self InterruptionEndedAVAudioSessionSetActiveYES];
-    }
-    
-}
-
--(void)InterruptionEndedAVAudioSessionSetActiveYES{
-    if (isBackGround) {
-        return;
-    }
-    if (self.isInterrupt == YES) {
-        [_es onStartCapture];
-        [_es startTalk];
-        self.isInterrupt = NO;
-    }
-}
-
-- (void)speaker:(UIButton *)sender {
-    [_es stopTalk];
-    
-    NSString *result = nil;
-    //鍚瓛鐘舵�� 鎻掕�冲鍚庢嫈鎺夊悗鎭㈠鍒伴粯璁よ缃�
-    if (sender == nil) {
-//        result = [_sessionHelper speaker:NO];
-        [_es resetAudioCaptureIsSpeak:NO];
-    }else{
-        if(!_isSpeaking){
-            [_es resetAudioCaptureIsSpeak:YES];
-//            result = [_sessionHelper speaker:YES];
-            _isSpeaking = YES;
-        }else{
-//            result = [_sessionHelper speaker:NO];
-            [_es resetAudioCaptureIsSpeak:NO];
-            _isSpeaking = NO;
-        }
-    }
-    if (result) {
-        [sender setTitle:result forState:UIControlStateNormal];
-        [_es startTalk];
-    }
-    
-}
-
-- (void)audioRouteChangeListenerCallback:(NSNotification*)notification
-{
-    
-    NSDictionary *interuptionDict = notification.userInfo;
-    NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
-    switch (routeChangeReason) {
-        case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
-            //NSLog(@"AVAudioSessionRouteChangeReasonNewDeviceAvailable");
-            //鍏嶆彁鐘舵�佷笅鑰虫満鎻掑叆娌℃湁閲囬泦锛屽悓鎰忓垏鎹㈠埌榛樿鐘舵��
-            NSLog(@"鑰虫満鎻掑叆");
-            [self speaker:nil];
-            break;
-        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
-            //NSLog(@"AVAudioSessionRouteChangeReasonOldDeviceUnavailable");
-            NSLog(@"鑰虫満鎷斿嚭");
-            //            if([[_speakerBtn titleForState:UIControlStateNormal] isEqualToString:@"鍏嶆彁"]){
-            //                 [self speaker:nil];
-            //            }else{
-            //                [self speaker:_speakerBtn];
-            //            }
-            [self speaker:nil];
-            break;
-        case AVAudioSessionRouteChangeReasonCategoryChange:
-            // called at start - also when other audio wants to play
-            //NSLog(@"AVAudioSessionRouteChangeReasonCategoryChange");
-            break;
-    }
-}
-
-/*
- 闇�瑕佹敞鎰忕殑鏄紝鏈変竴涓腑鏂紑濮嬫秷鎭笉涓�瀹氫細鏈変竴涓腑鏂粨鏉熸秷鎭紝杩欏氨鎰忓懗鐫�涓柇缁撴潫鐨勫洖璋冮噷鐨勫鐞嗛�昏緫鍙兘浼氭病鏈夎鎵ц鍒般��
- 鎵�浠ラ渶瑕佸叧娉ㄥ綋鍒囧埌鍓嶅彴杩愯鐘舵�佹椂锛屾槸涓嶆槸闇�瑕侀噸鏂版縺娲讳綘鐨� Audio Session銆�
- */
-- (void)willEnterForeground:(NSNotification*)notification{
-    NSLog(@"willEnterForeground");
-    //鍒濇鍚姩浼氳蛋杩欎釜閫氱煡(鏍归〉闈�)锛岃繖鏃跺�欐槸娌℃湁杩涘叆鍚庡彴鐨�
-    if (isBackGround) {
-        return;
-    }
-    
-    [self InterruptionEndedAVAudioSessionSetActiveYES];
-    
-    // 杩欓噷鏄�冭檻鍒扮敤鎴锋病鏈夋巿鏉冿紝涔嬪悗閫氳繃AlertAction璺宠浆鍒拌缃〉闈㈡巿鏉冨悗鍐嶅洖鍒癆PP鏃跺仛鐨勯噸鏂版娴�
-    //璺宠浆鍒拌缃〉闈紝鎺堟潈鍚庤繑鍥為〉闈紝缁х画鍒濆鍖栭噰闆嗗櫒
-    if(!isAccessAudio){
-        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-        if (isAccessAudio) {
-            [_es initAudioCaptureSession];
-        }
-    }
-    
-//    if (isAccessAudio && isAccessVideo) {
-//        return;
-//    }
-//    if (isAccessVideo && !isAccessAudio) {
-//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-//        if (isAccessAudio) {
-//            [_es initAudioCaptureSession];
-//        }
-//    }else if (!isAccessVideo && isAccessAudio){
-////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-////        if (isAccessVideo) {
-////            [_es initVideoCaptureSession];
-////        }
-//
-//    }else if (!isAccessVideo && !isAccessAudio){
-//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//        if (isAccessAudio) {
-//            [_es initAudioCaptureSession];
-//        }
-////        if (isAccessVideo) {
-////            [_es initVideoCaptureSession];
-////        }
-//    }
-}
-- (void)willEnterBackground:(NSNotification *)notification {
-    isBackGround = YES;
-}
-
-//鎺堟潈Alert
--(void)requestAccessForAVMedia{
-    if (!isAccessAudio) {
-        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    }
-//    if (!isAccessVideo) {
-//        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//    }
-    if (!iSAudioNotDetermined && iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庢病鏈夋巿鏉�,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }else if(iSAudioNotDetermined && !iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"鐩告満娌℃湁鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }else if(!iSAudioNotDetermined && !iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庝笌鐩告満鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }
-}
-
--(void)requestAccessForAVMediaType:(AVMediaType)type{
-    if (type == AVMediaTypeVideo) {
-        isAccessVideo = YES;
-        iSVideoNotDetermined = YES;
-    }else{
-        isAccessAudio = YES;
-        iSAudioNotDetermined = YES;
-    }
-    switch ([AVCaptureDevice authorizationStatusForMediaType:type])
-    {
-        case AVAuthorizationStatusAuthorized:
-        {
-            break;
-        }
-        case AVAuthorizationStatusNotDetermined:
-        {
-            dispatch_suspend(dispatch_get_main_queue());
-            [AVCaptureDevice requestAccessForMediaType:type completionHandler:^(BOOL granted) {
-                if (!granted) {
-                    if (type == AVMediaTypeVideo) {
-                        self->isAccessVideo = NO;
-                    }else{
-                        self->isAccessAudio = NO;
-                    }
-                }
-                dispatch_resume(dispatch_get_main_queue());
-            }];
-            break;
-        }
-        default:
-        {
-            if (type == AVMediaTypeVideo) {
-                isAccessVideo = NO;
-                iSVideoNotDetermined = NO;
-            }else{
-                isAccessAudio = NO;
-                iSAudioNotDetermined = NO;
-            }
-            break;
-        }
-    }
-}
-
--(void)creatAlertViewWith:(NSString *)title message:(NSString *) msg cancel:(NSString *)cancelMsg{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:cancelMsg style:UIAlertActionStyleCancel handler:nil]];
-    [alertController addAction:[UIAlertAction actionWithTitle:@"璁剧疆" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
-    }]];
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-
-
-#pragma 淇濆瓨鍥剧墖鍒扮浉鍐�
-- (void)saveImageToPhotosAlbum:(UIImage *)savedImage
-{
-    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
-    if (status == PHAuthorizationStatusNotDetermined)
-    {
-        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
-            if(status == PHAuthorizationStatusAuthorized)
-            {
-                UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-            }
-        }];
-    }
-    else
-    {
-        if (status == PHAuthorizationStatusAuthorized)
-        {
-            UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-        }
-    }
-}
-
-// 鎸囧畾鍥炶皟鏂规硶
-- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
-{
-    NSString *message = nil;
-    if (!error) {
-        message = saveToTheAlbumsStr;
-        // 鎴浘鎴愬姛鍥炶皟
-        if(self.mESCallDelegate != NULL){
-            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
-        }
-    }
-    else
-    {
-        message = operationFailedStr;
-    }
-    [self showUIAlertView:message];
-}
-
-
-
-#pragma 闇囧姩瀹炵幇璨屼技鍜孲DK鍐茬獊 涓嶈兘瀹炵幇闇囧姩
-//寮�濮嬫挱鏀剧殑鏃跺�欒皟鐢�
--(void)startPlaySystemSound{
-    
-    return;
-    //    //闇囧姩鐨勬彁绀烘枃浠跺悕鏀惧埌璧勬簮鐩綍涓�
-    //    NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
-    //    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
-    //鍒嗗埆娉ㄥ唽閾冨0鍜岄渿鍔ㄥ畬鍚庣殑鍥炶皟
-    AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, vibrationCompleteCallback, NULL);
-    //    AudioServicesAddSystemSoundCompletion(sound, NULL, NULL, soundCompleteCallback, NULL);
-    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//寮�濮嬮渿鍔�
-    //    AudioServicesPlaySystemSound(sound);//寮�濮嬫挱鏀鹃搩澹�
-}
-
-//鎵嬪姩鍋滄鎾斁鐨勬椂鍊欒皟鐢�
-- (void)stopPlaySystemSound{
-    return;
-    NSLog(@"stop PlaySystemSound");
-    stopRingAndVibration();
-}
-
-//鍋滄鍝嶉搩鍜岄渿鍔紝绉婚櫎鍥炶皟骞跺鐞嗘帀閾冨0鍜岄渿鍔�
-void stopRingAndVibration() {
-    AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
-    //    AudioServicesRemoveSystemSoundCompletion(sound);
-    AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);
-    //    AudioServicesDisposeSystemSoundID(sound);
-}
-
-//闇囧姩瀹屾垚鍥炶皟锛屽洜涓洪渿鍔ㄤ竴涓嬩究浼氳皟鐢ㄤ竴娆★紝杩欓噷寤惰繜800ms鍐嶇户缁渿鍔紝鍜屽井淇″樊涓嶅锛屾椂闂撮暱鐭彲鑷繁鎺у埗銆傚弬鏁皊ound鍗充负娉ㄥ唽鍥炶皟鏃朵紶鐨勭涓�涓弬鏁�
-void vibrationCompleteCallback(SystemSoundID sound,void * clientData) {
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(800 * NSEC_PER_MSEC)), dispatch_get_global_queue(0, 0), ^{
-        AudioServicesPlaySystemSound(sound);
-    });
-}
-
-////閾冨0鎾斁瀹屾垚鍥炶皟锛岃繖绉嶆柟娉晉鎾斁鐨勯煶棰戦檺鍒跺湪30绉掑唴锛屾挱鏀惧畬鐩存帴鍝嶉搩鍜岄渿鍔�
-//void soundCompleteCallback(SystemSoundID sound,void * clientData) {
-//
-//    stopRingAndVibration();
-//}
-
-
-@end
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.h b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.h
deleted file mode 100644
index a54c902..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-//  ESOnMonitorViewController.h
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-#import "ESCallDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ESOnMonitorViewController : UIViewController
-
-@property (nonatomic,strong) NSString               *mESVideoID;
-@property (nonatomic,assign) int                    mESRoomID;//浣忔埛鐨勬埧闂碔D
-@property (nonatomic,strong) NSString               *roomName;
-@property (nonatomic,strong) NSString               *deviceName;
-
-#pragma mark ESCallDelegate
-/**
- 涓版灄浜嬩欢浠g悊
- */
-@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
-
-#pragma mark 瀵瑰鎺ュ彛鏂规硶
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.m
deleted file mode 100644
index 192c1f2..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.m
+++ /dev/null
@@ -1,935 +0,0 @@
-//
-//  ESOnMonitorViewController.m
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import "ESOnMonitorViewController.h"
-#import "ESOnUtlis.h"
-#import <AVFoundation/AVFoundation.h>
-#import <ESVideoPhoneSDk/ESVideoPhone.h>
-#import <ESVideoPhoneSDk/ESError.h>
-#import <Photos/Photos.h>
-//#import "AudioSessionHelper.h"
-//#import "CBToast.h"
-#import "ESVideo.h"
-
-@interface ESOnMonitorViewController ()<ESVideoPhoneDelegate>
-
-//@property (nonatomic,strong) AudioSessionHelper    *sessionHelper;
-@property (nonatomic,strong) ESVideoPhone          *es;
-@property (nonatomic,assign) BOOL                  playing;
-@property (nonatomic,assign) BOOL                  isInterrupt;
-@property (nonatomic,assign) BOOL                  isSpeaking;
-@property (nonatomic,strong) UIImage               *snapImage; //鎴浘
-
-
-@property (nonatomic, strong) UIButton *backButton;  //
-@property (nonatomic, strong) UILabel *titleUILabel;  //
-@property (nonatomic, strong) UIView *centerView;  //鍐呭鑳屾櫙View
-@property (nonatomic, strong) UIView *videoView;
-
-@property (nonatomic, strong) UIButton *screenshotImgBtn;  //
-@property (nonatomic, strong) UIButton *screenshotTextBtn;  //
-
-@property (nonatomic, strong) UIButton *unlockImgBtn;  //
-@property (nonatomic, strong) UIButton *unlockTextBtn;  //
-@property (nonatomic,strong) dispatch_source_t openDoorTimer;
-@property (nonatomic, assign) int openDoorTimeout;
-
-@end
-
-@implementation ESOnMonitorViewController
-{
-    BOOL isAccessAudio;
-    BOOL isAccessVideo;
-    BOOL isBackGround;
-    BOOL iSVideoNotDetermined;
-    BOOL iSAudioNotDetermined;
-    
-    NSString * tipStr;
-    NSString * okStr;
-    NSString * saveToTheAlbumsStr;
-    NSString * operationFailedStr;
-    NSString * screenshotStr;
-    NSString * unlockStr;
-    NSString * endOfMonitoringStr;
-    NSString * unlockSuccessfullyStr;
-    
-    CGFloat Height66;
-    
-    //    int _openDoorTimeout;
-}
-
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    self.view.backgroundColor = UIColor.whiteColor;
-    Height66 = GetRealWidth(66);
-    [self initLlanguage];
-    [self initTopBarView];
-    [self initCentetView];
-    [self initData];
-    [self initESVideo];
-    [self StartMonitoring];
-    // Do any additional setup after loading the view.
-}
-
-
-
--(void)initLlanguage{
-    NSString *languageName = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
-    
-    // 绠�浣撲腑鏂�
-    if ([languageName rangeOfString:@"zh-Hans"].location != NSNotFound) {
-        tipStr = @"鎻愮ず";
-        okStr = @"纭";
-        saveToTheAlbumsStr = @"宸蹭繚瀛樿嚦鎵嬫満鐩稿唽.";
-        operationFailedStr = @"鎿嶄綔澶辫触";
-        screenshotStr = @"鎴浘";
-        unlockStr = @"寮�閿�";
-        endOfMonitoringStr = @"鐩戣缁撴潫";
-        unlockSuccessfullyStr = @"寮�閿佹垚鍔�";
-        
-    }else{
-        tipStr = @"Prompt";
-        okStr = @"OK";
-        saveToTheAlbumsStr = @"Saved to the albums.";
-        operationFailedStr = @"Operation failed.";
-        screenshotStr = @"Screenshot";
-        unlockStr = @"Unlock";
-        endOfMonitoringStr = @"End of monitoring";
-        unlockSuccessfullyStr = @"Unlock successfully";
-    }
-}
-
-
-//椤堕儴View
-- (void)initTopBarView {
-    UIView *TopView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, APP_TOP_BAR_HEIGHT)];
-    TopView.backgroundColor = HEXCOLORA(0xF7F7F7,1.0);
-    [TopView addSubview:self.backButton];
-    [TopView addSubview:self.titleUILabel];
-//    [TopView addSubview:self.moreButton];
-    [self.view addSubview:TopView];
-    TopView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-    TopView.layer.shadowOffset = CGSizeMake(0,0.5);
-    TopView.layer.shadowOpacity = 1;
-    TopView.layer.shadowRadius = 0;
-}
-
-- (UIButton *)backButton{
-    if (_backButton == nil) {
-        _backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_STATUS_BAR_HEIGHT, 44, 44)];
-        [_backButton setImage:[UIImage imageNamed:@"ic_esvideo_on_back"] forState:UIControlStateNormal];
-        _backButton.imageEdgeInsets = UIEdgeInsetsMake(12,12,12,12);
-        [_backButton.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
-    }
-    return _backButton;
-}
-
--(void)backAction{
-    [self.navigationController popViewControllerAnimated:true];
-    //    [self dismissViewControllerAnimated:YES completion:NULL];
-}
-
--(UILabel *)titleUILabel{
-    if (_titleUILabel == Nil) {
-        _titleUILabel = [[UILabel alloc] initWithFrame:CGRectMake(90, APP_STATUS_BAR_HEIGHT, self.view.frame.size.width - 180, 44)];
-        _titleUILabel.font = [UIFont fontWithName:APP_UIFont_BOLD size:18.0];
-        _titleUILabel.textColor = TextColor;
-        _titleUILabel.text = @"";
-        _titleUILabel.textAlignment = NSTextAlignmentCenter;
-    }
-    return _titleUILabel;
-}
-
-- (void)initCentetView {
-    [self.view addSubview:self.centerView];
-    //    [self.centerView addSubview:self.collectButton];
-//    [self.centerView addSubview:self.homeView];
-    [self.centerView addSubview:self.videoView];
-    [self.centerView addSubview:self.screenshotImgBtn];
-    [self.centerView addSubview:self.screenshotTextBtn];
-    [self.centerView addSubview:self.unlockImgBtn];
-    [self.centerView addSubview:self.unlockTextBtn];
-
-}
-
-- (UIView *)centerView{
-    if (_centerView == nil) {
-        _centerView = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_TOP_BAR_HEIGHT, APP_SCREEN_WIDTH, APP_VISIBLE_HEIGHT)];
-        _centerView.backgroundColor = UIColor.whiteColor;
-//        [self setRadiusWithView:_centerView];
-   
-    }
-    return _centerView;
-}
-
--(void)setRadiusWithView:(UIView *)mView{
-    //椤堕儴鍦嗚
-    UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
-    if (@available(iOS 11.0, *)) {
-        mView.layer.cornerRadius = 20;
-        mView.layer.maskedCorners =  (CACornerMask)corners;
-    }else{
-        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mView.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(20,20)];
-        //鍒涘缓 layer
-        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
-        maskLayer.frame = mView.bounds;
-        //璧嬪��
-        maskLayer.path = maskPath.CGPath;
-        mView.layer.mask = maskLayer;
-    }
-}
-
--(UIView *)videoView{
-    if (_videoView == Nil) {
-        _videoView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, GetRealWidth((210)))];
-        _videoView.backgroundColor = UIColor.lightGrayColor;
-        _videoView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-        _videoView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _videoView.layer.shadowOpacity = 1;
-        _videoView.layer.shadowRadius = 0;
-    }
-    return _videoView;
-}
-
-#pragma 鎴浘鍥炬爣鎸夐挳
-- (UIButton *)screenshotImgBtn{
-    if (_screenshotImgBtn == nil) {
-        _screenshotImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-        //        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateSelected];
-        [_screenshotImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotImgBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealWidth(276) + Height66/2);
-        
-    }
-    return _screenshotImgBtn;
-}
-
--(void)screenshotDownAction{
-    
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateNormal];
-    [_screenshotTextBtn setTitleColor:TextSelectColor forState:UIControlStateNormal];
-}
-
--(void)screenshotAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-    [_screenshotTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-    
-    //鎴浘
-    if(_es){
-        [_es onSnap];
-    }
-}
-
-#pragma 鎴浘鏂囧瓧鎸夐挳
-- (UIButton *)screenshotTextBtn{
-    if (_screenshotTextBtn == nil) {
-        _screenshotTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_screenshotTextBtn setTitle:@"鎴浘" forState:UIControlStateNormal];
-        _screenshotTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        _screenshotTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        [_screenshotTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        //        [_screenshotTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_screenshotTextBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotTextBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotTextBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotTextBtn.center = CGPointMake(_screenshotImgBtn.center.x, GetRealWidth(364));
-    }
-    return _screenshotTextBtn;
-}
-
-- (UIButton *)unlockImgBtn{
-    if (_unlockImgBtn == nil) {
-        _unlockImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-        //        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateSelected];
-        [_unlockImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_unlockImgBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_unlockImgBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockImgBtn.adjustsImageWhenHighlighted = NO;
-        _unlockImgBtn.center = CGPointMake((APP_SCREEN_WIDTH / 4) * 3, GetRealWidth(276) + Height66/2);
-    }
-    return _unlockImgBtn;
-}
-
--(void)unlockDownAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateNormal];
-    [_unlockTextBtn setTitleColor:TextSelectColor forState:UIControlStateNormal];
-}
-
--(void)unlockAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-    //寮�閿�
-    if(_es){
-        [_es openTheDoorWithRoomid:_mESRoomID];
-    }
-}
-
-- (UIButton *)unlockTextBtn{
-    if (_unlockTextBtn == nil) {
-        _unlockTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_unlockTextBtn setTitle:@"寮�閿�" forState:UIControlStateNormal];
-        _unlockTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _unlockTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        //        _unlockTextBtn.titleLabel.textColor = TextColor;
-        [_unlockTextBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
-        [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        //        [_unlockTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_unlockTextBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside];
-        [_unlockTextBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockTextBtn.adjustsImageWhenHighlighted = NO;
-        _unlockTextBtn.center = CGPointMake(_unlockImgBtn.center.x, GetRealWidth(364));
-    }
-    return _unlockTextBtn;
-}
-
-#pragma 寮�閿佹垚鍔�
--(void)setOpenDoorSuccess{
-    [self setUnlock:NO];
-    _openDoorTimeout = 0;
-    [self startOpenDoorCountdown];
-    [self showUIAlertView:unlockSuccessfullyStr];
-    // 寮�閿佹垚鍔熷洖璋�
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onUnlockAction];
-    }
-}
-
--(void)setUnlock:(BOOL)ISEnable{
-    [_unlockImgBtn setEnabled:ISEnable];
-    [_unlockTextBtn setEnabled:ISEnable];
-}
-
-/** 寮�鍚�掕鏃� */
-- (void)startOpenDoorCountdown {
-    
-    if (_openDoorTimeout > 20) {
-        return;
-    }
-    
-    _openDoorTimeout = 0;
-    
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _openDoorTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_openDoorTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_openDoorTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.openDoorTimeout >= 20 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.openDoorTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT setUnlock:YES];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.openDoorTimeout++;
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_openDoorTimer);
-    
-}
-
-
-
-#pragma SDK鍙瀵硅 鍔熻兘閮ㄥ垎
--(void)initESVideo{
-    //鍒濆鍖栦腑鏂紝杩涘叆鍚庡彴鐨則ag
-    _es = ESVideo.shareInstance.es;
-    
-    _playing = NO;
-    _isSpeaking = NO;
-    self.isInterrupt = NO;
-    isBackGround = NO;
-    
-    [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    if (isAccessAudio) {
-        ImageCallback snapImageCallback = ^(UIImage *image){
-            //block鏄湪鍒嗙嚎绋嬩腑璋冪敤鐨勶紝杩欓噷瑕佹斁鍒颁富绾跨▼
-            dispatch_async(dispatch_get_main_queue(), ^{
-                self->_snapImage = image;
-                [self saveImageToPhotosAlbum:image];
-            });
-        };
-        //闂ㄥ彛鏈轰細鏈夎棰戠殑闀垮楂橈紝鏄浐瀹氱殑锛堟殏鏃惰繕涓嶇‘瀹氾級
-        if (_es) {
-            //鍒ゆ柇瑙嗛娓叉煋鏄惁鍒濆鍖栨垚鍔燂紝濡傛灉澶辫触浼氳蛋ESVideoPhoneDelegate鏂规硶
-            if (_es.showView) {
-               
-                _es.delegate = self;
-                ESVideo.shareInstance.snapImageCallback = snapImageCallback;
-                _es.showView.backgroundColor = [UIColor whiteColor];
-                [self.videoView addSubview:_es.showView];
-                _es.showView.hidden = YES;
-            }
-        }else{
-            NSLog(@"ESVideoPhone 鍒濆鍖栧け璐�");
-            return;
-        }
-        // 鍒濆鍖朅udio閲囬泦Unit
-        if(![_es initAudioCaptureSession]){
-            return;
-        }
-    }else{
-        //闊抽娌℃湁鏉冮檺寤鸿涓嶈鍙戣捣閫氳瘽
-        return;
-    }
-    //鍒濆鍖栬棰戦噰闆咰apture
-//    [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//    if (isAccessVideo) {
-//        if(![_es initVideoCaptureSession]){
-//            NSLog(@"VideoCaptureSession 鍒濆鍖栧け璐�");
-//        }
-//    }
-//    //鍒濆鍖朅udioSession
-//    _sessionHelper = [[AudioSessionHelper alloc]init];
-//    [_sessionHelper setAudioSession];
-    //娣诲姞杩涘叆鍚庡彴锛屼腑鏂瓑閫氱煡
-    [self addObservers];
-    
-    
-}
-
--(void)initData{
-//    _topUILabel.text = _deviceName;
-//    _homeUILabel.text = _roomName;
-    [_screenshotTextBtn setTitle:screenshotStr forState:UIControlStateNormal];
-    [_unlockTextBtn setTitle:unlockStr forState:UIControlStateNormal];
-    
-    _titleUILabel.text = _deviceName;
-    
-//    [_collectButton setSelected:_isCollect];
-}
-
-/**
- 寮�濮嬬洃鎺�
- */
--(void)StartMonitoring{
-    if(_es){
-        [_es onMonitor:_mESVideoID];
-    }else{
-        NSLog(@"ES鍒濆鍖栧け璐�");
-    }
-}
-
--(NSString *)getCurrentdateInterval
-{
-    NSDate *datenow = [NSDate date];
-    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
-    return timeSp;
-}
-
--(void)showUIAlertView:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleCancel handler:nil]];
-    [self presentViewController:alertController animated:YES completion:nil];
-    
-}
-
--(void)showUIAlertViewWithBack:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self backAction];
-    }]];
-    
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-
-
-#pragma viewDidAppear
--(void)viewDidAppear:(BOOL)animated{
-    //杩欎釜鏂规硶璇锋牴鎹瓵pp鐨勫叿浣撴儏鍐佃皟鐢�
-    //鍦╲iewDidLoad涓� 璋冪敤requestAccessForAVMediaType: 鏄负浜嗚妭绾﹀垵濮嬪寲鐨勬椂闂�
-    //鍦╲iewDidAppear涓皟鐢╮equestAccessForAVMediaType: 鏄负浜嗗脊鍑烘彁绀烘墦寮�鏉冮檺鐨凙lert
-    //娴嬭瘯鐨勬椂鍊欏彂鐜板涓嬫儏鍐碉細濡傛灉鍙妸鎺堟潈鏂规硶鏀惧埌ViewDidAppear鏂规硶涓鐞嗭紝濡傛灉娌℃湁鎺堟潈鍦ㄥ垵濮嬪寲閲囬泦鍣ㄦ椂浼氬け璐ャ�傚悓鏍稟lertView浼氬洜涓篤iew娌℃湁didLoad鑰屽鑷磒resent涓嶅嚭鏉�
-
-//    if (!isAccessVideo || !isAccessAudio) {
-//        [self requestAccessForAVMedia];
-//    }
-    
-    if (!isAccessAudio) {
-        [self requestAccessForAVMedia];
-    }
-}
-
--(void)setIsInterrupt:(BOOL)isInterrupt{
-    if (_es) {
-        _es.isInterrupt = isInterrupt;
-    }
-}
-
--(void)viewWillDisappear:(BOOL)animated{
-    [super viewWillDisappear:animated];
-    //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽��
-    if(_es){
-        [_es onHangup];
-        [_es onStopCapture];
-        [_es stopTalk];
-        
-        _es.delegate = nil;
-        ESVideo.shareInstance.snapImageCallback = nil;
-        //        _es.showView.removeFromSuperview;
-    }
-    //    [_es freeSubClass];
-}
-
--(void)dealloc{
-    NSLog(@"==============dealloc  1");
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
-    NSLog(@"==============dealloc  2");
-    //    [_es freeSubClass];
-    //     NSLog(@"==============dealloc  3");
-    
-    if(_openDoorTimer){
-        dispatch_source_cancel(_openDoorTimer);
-        _openDoorTimer = nil; // OK
-        
-    }
-    NSLog(@"==============dealloc 3");
-}
-
-#pragma mark ESVideoPhoneDelegate
-//瑙嗛閫氳瘽鐨勭姸鎬佷唬鐞嗕簨浠讹紝phoneEvent涓鸿繑鍥炵殑娑堟伅閲岄潰鍖呭惈event鐘舵�佷笌涓巈vent鐩稿叧鐨勬暟鎹�
--(void)getPhoneEvent_UI:(NSString *)phoneEvent{
-    NSLog(@"==============ESVideoPhoneDelegate浜嬩欢%@", phoneEvent);
-    NSArray *strArray = [phoneEvent componentsSeparatedByString:@"\r\n"];
-    NSArray *eventArray = [strArray.firstObject componentsSeparatedByString:@"="];
-    NSString *phoneEventStr = eventArray.lastObject;
-    
-    if([phoneEventStr isEqual:@"EVT_Ringing"]){
-        
-        //           [_mCallOrAccept setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-    }else if([phoneEventStr isEqual:@"EVT_StartStream"]){
-        
-    } else if([phoneEventStr isEqual:@"EVT_StopStream"]){
-        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-    }else if([phoneEventStr isEqual:@"EVT_Connected"]){
-        [self speaker:nil];
-        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-    }else if([phoneEventStr isEqual:@"EVT_MonitorConnected"]){
-        _es.showView.hidden = NO;
-        [self speaker:nil];
-        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-    }else if([phoneEventStr  isEqual:@"EVT_HangUp"]){
-        
-        
-        //        [CBToast showToastAction:endOfMonitoringStr];
-        [self showUIAlertViewWithBack:endOfMonitoringStr];
-        //        [self backAction];
-        
-        
-        
-        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-    }else if([phoneEventStr  isEqual:@"EVT_P2POnlineStatusChanged"]){
-        //EVT_P2PStarted(p2p鍒濆鍖朞K锛屽彲浠ヨ繛鎺�),EVT_P2POnlineStatusChangedonline=1
-        //p2p鍒濆鍖栨垚鍔�,鎵嬫満绔洰鍓嶆病鏈夎繖涓洖璋冧簡
-        //_mCallOrAccept.enabled = YES;
-        //_monitorBtn.enabled = YES;
-    }else if([phoneEventStr  isEqual:@"EVT_RECV_CUSTOM_DATA"]){
-        //寮�闂ㄧ殑缁撴灉浠庤繖閲岃繑鍥�
-        NSString *baseStr = [strArray[1] substringFromIndex:5];
-        NSData *data = [[NSData alloc]initWithBase64EncodedString:baseStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
-        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
-        NSInteger status = [[dic valueForKey:@"status"]integerValue];
-        if(status && status == 1){
-            NSLog(@"寮�闂ㄦ垚鍔�");
-            
-            
-            [self setOpenDoorSuccess];
-        }else{
-            NSLog(@"寮�闂ㄥけ璐�");
-        }
-    }
-}
-
--(void)getAErrorForESVideoPhone:(NSString *)errorStr type:(NSUInteger)errortype{
-    NSLog(@"==============ErrorForESVideo閿欒%@", errorStr);
-    //娌℃湁鎺堟潈
-    if (errortype == LMPVideoCaptureErrorNotAuthorized) {
-        NSLog(@"閿欒%@", errorStr);
-    }
-}
-#pragma mark AudioSession涓嶯otifications澶勭悊
-
-- (void) addObservers
-{
-    //    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name: UIKeyboardWillChangeFrameNotification  object: nil];
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRuntimeError:) name:AVCaptureSessionRuntimeErrorNotification object:nil];
-    
-    //isAccessVideo锛屽鏋淎VCaptureSession娌℃湁new鍑烘潵涓嶄細鏀跺埌閫氱煡
-    if (isAccessVideo) {
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionWasInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:nil];
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInterruptionEnded:) name:AVCaptureSessionInterruptionEndedNotification object:nil];
-    }else{
-        //object:涓簄il 鍙兘涓嶄細瑙﹀彂閫氱煡
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:)
-                                                     name:AVAudioSessionInterruptionNotification object:[AVAudioSession
-                                                                                                         sharedInstance]];
-    }
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChangeListenerCallback:)   name:AVAudioSessionRouteChangeNotification object:nil];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
-}
-
-- (void) sessionRuntimeError:(NSNotification*)notification
-{
-    NSError* error = notification.userInfo[AVCaptureSessionErrorKey];
-    NSLog(@"Capture session runtime error: %@", error);
-    
-    // If media services were reset, and the last start succeeded, restart the session.
-    if (error.code == AVErrorMediaServicesWereReset) {
-        [_es onStopCapture];
-        [_es stopTalk];
-    }
-}
-
-- (void)handleInterruption:(NSNotification *)notification
-{
-    NSUInteger interruptionType = [[[notification userInfo]
-                                    objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
-    
-    if (AVAudioSessionInterruptionTypeBegan == interruptionType)
-    {
-        if (isBackGround) {
-            return;
-        }
-        [_es stopTalk];
-    }
-    else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
-    {
-        if (self.isInterrupt == NO) {
-            return;
-        }else{
-            //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-            [self InterruptionEndedAVAudioSessionSetActiveYES];
-        }
-    }
-}
-
-//AVAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-- (void) sessionWasInterrupted:(NSNotification*)notification
-{
-    if (_playing == YES) {
-        self.isInterrupt = YES;
-        //AVCaptureSessionInterruptionReason
-        if (@available(iOS 9.0, *)) {
-            NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue]; //鐢佃瘽涓柇鏄�1
-            NSLog(@"Capture session was interrupted with reason %ld", (long)reason);
-            
-            //闊抽纭欢鏆傛椂涓嶅彲鐢ㄨ�岄�犳垚鐨勪腑鏂紝渚嬪锛岀數璇濇垨璀︽姤銆�
-            if (reason == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient ||
-                reason == AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient) {
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient");
-                
-                //VAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-                //Audio Queue Services, I/O audio unit
-                [_es onStopCapture];
-                [_es stopTalk];
-                /*
-                 NSError *error = nil;
-                 [[AVAudioSession sharedInstance] setActive:NO error:&error];
-                 if (error) {
-                 NSLog(@"sessionWasInterruptedSetActiveNO error:%@", error);
-                 }
-                 */
-            }else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground){
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground");
-                //濡傛灉鏄數璇濅腑鏂紝涓嶄細璧拌繘鍏ュ悗鍙扮殑閫氱煡锛岃繘鍏ュ悗鍙板啀鍒囨崲鍒板墠鍙拌繖閲屾槸涓嶇敤澶勭悊鐨�
-                if (isBackGround) {
-                    return;
-                }
-                [_es onStopCapture];
-                [_es stopTalk];
-            }
-            //澶氫釜搴旂敤绋嬪簭璧勬簮浜夌敤璐ㄩ噺涓嬮檷銆傚彧鏈夊綋搴旂敤绋嬪簭鍗犳嵁鍏ㄥ睆鏃讹紝浼氳瘽鎵嶈兘杩愯銆�
-            else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps) {
-                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps");
-                // Fade-in a label to inform the user that the camera is unavailable.
-            }else if (@available(iOS 11.1, *)) {
-                if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure){
-                    NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure");
-                }
-            } else {
-                // Fallback on earlier versions
-            }
-        } else {
-            if (isBackGround) {
-                return;
-            }
-            [_es onStopCapture];
-            [_es stopTalk];
-        }
-    }
-}
-
-//杩欎釜閫氱煡鍙兘浼氳幏鍙栦笉鍒帮紝
-- (void) sessionInterruptionEnded:(NSNotification*)notification
-{
-    //    NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue];
-    NSLog(@"Capture session interruption ended");
-    if (self.isInterrupt == NO) {
-        return;
-    }else{
-        //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-        [self InterruptionEndedAVAudioSessionSetActiveYES];
-    }
-    
-}
-
--(void)InterruptionEndedAVAudioSessionSetActiveYES{
-    if (isBackGround) {
-        return;
-    }
-    if (self.isInterrupt == YES) {
-        [_es onStartCapture];
-        [_es startTalk];
-        self.isInterrupt = NO;
-    }
-}
-
-
-- (void)speaker:(UIButton *)sender {
-    [_es stopTalk];
-    
-    NSString *result = nil;
-    //    //鍚瓛鐘舵�� 鎻掕�冲鍚庢嫈鎺夊悗鎭㈠鍒伴粯璁よ缃�
-    //    if (sender == nil) {
-    //        result = [_sessionHelper speaker:NO];
-    //    }else{
-    //        if(!_isSpeaking){
-    //            result = [_sessionHelper speaker:YES];
-    //            _isSpeaking = YES;
-    //        }else{
-    //            result = [_sessionHelper speaker:NO];
-    //            _isSpeaking = NO;
-    //        }
-    //    }
-    //    if (result) {
-    //        [sender setTitle:result forState:UIControlStateNormal];
-    //        [_es startTalk];
-    //    }
-    
-    if(!_isSpeaking){
-//        result = [_sessionHelper speaker:YES];
-        [_es resetAudioCaptureIsSpeak:YES];
-        _isSpeaking = YES;
-    }else{
-//        result = [_sessionHelper speaker:NO];
-        [_es resetAudioCaptureIsSpeak:NO];
-        _isSpeaking = NO;
-    }
-    if (result) {
-        //          [sender setTitle:result forState:UIControlStateNormal];
-        [_es startTalk];
-    }
-}
-
-- (void)audioRouteChangeListenerCallback:(NSNotification*)notification
-{
-    
-    NSDictionary *interuptionDict = notification.userInfo;
-    NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
-    switch (routeChangeReason) {
-        case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
-            //NSLog(@"AVAudioSessionRouteChangeReasonNewDeviceAvailable");
-            //鍏嶆彁鐘舵�佷笅鑰虫満鎻掑叆娌℃湁閲囬泦锛屽悓鎰忓垏鎹㈠埌榛樿鐘舵��
-            NSLog(@"鑰虫満鎻掑叆");
-            [self speaker:nil];
-            break;
-        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
-            //NSLog(@"AVAudioSessionRouteChangeReasonOldDeviceUnavailable");
-            NSLog(@"鑰虫満鎷斿嚭");
-            [self speaker:nil];
-            
-            break;
-        case AVAudioSessionRouteChangeReasonCategoryChange:
-            // called at start - also when other audio wants to play
-            //NSLog(@"AVAudioSessionRouteChangeReasonCategoryChange");
-            break;
-    }
-}
-
-/*
- 闇�瑕佹敞鎰忕殑鏄紝鏈変竴涓腑鏂紑濮嬫秷鎭笉涓�瀹氫細鏈変竴涓腑鏂粨鏉熸秷鎭紝杩欏氨鎰忓懗鐫�涓柇缁撴潫鐨勫洖璋冮噷鐨勫鐞嗛�昏緫鍙兘浼氭病鏈夎鎵ц鍒般��
- 鎵�浠ラ渶瑕佸叧娉ㄥ綋鍒囧埌鍓嶅彴杩愯鐘舵�佹椂锛屾槸涓嶆槸闇�瑕侀噸鏂版縺娲讳綘鐨� Audio Session銆�
- */
-- (void)willEnterForeground:(NSNotification*)notification{
-    NSLog(@"willEnterForeground");
-    //鍒濇鍚姩浼氳蛋杩欎釜閫氱煡(鏍归〉闈�)锛岃繖鏃跺�欐槸娌℃湁杩涘叆鍚庡彴鐨�
-    if (isBackGround) {
-        return;
-    }
-    
-    [self InterruptionEndedAVAudioSessionSetActiveYES];
-    
-    // 杩欓噷鏄�冭檻鍒扮敤鎴锋病鏈夋巿鏉冿紝涔嬪悗閫氳繃AlertAction璺宠浆鍒拌缃〉闈㈡巿鏉冨悗鍐嶅洖鍒癆PP鏃跺仛鐨勯噸鏂版娴�
-    //璺宠浆鍒拌缃〉闈紝鎺堟潈鍚庤繑鍥為〉闈紝缁х画鍒濆鍖栭噰闆嗗櫒
-    if(!isAccessAudio){
-        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-        if (isAccessAudio) {
-            [_es initAudioCaptureSession];
-        }
-    }
-    
-//    if (isAccessAudio && isAccessVideo) {
-//        return;
-//    }
-//    if (isAccessVideo && !isAccessAudio) {
-//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-//        if (isAccessAudio) {
-//            [_es initAudioCaptureSession];
-//        }
-//    }else if (!isAccessVideo && isAccessAudio){
-////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-////        if (isAccessVideo) {
-////            [_es initVideoCaptureSession];
-////        }
-//
-//    }else if (!isAccessVideo && !isAccessAudio){
-//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//        if (isAccessAudio) {
-//            [_es initAudioCaptureSession];
-//        }
-////        if (isAccessVideo) {
-////            [_es initVideoCaptureSession];
-////        }
-//    }
-}
-- (void)willEnterBackground:(NSNotification *)notification {
-    isBackGround = YES;
-}
-
-//鎺堟潈Alert
--(void)requestAccessForAVMedia{
-    if (!isAccessAudio) {
-        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    }
-//    if (!isAccessVideo) {
-////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//    }
-    if (!iSAudioNotDetermined && iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庢病鏈夋巿鏉�,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }else if(iSAudioNotDetermined && !iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"鐩告満娌℃湁鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }else if(!iSAudioNotDetermined && !iSVideoNotDetermined){
-        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庝笌鐩告満鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-    }
-}
-
--(void)requestAccessForAVMediaType:(AVMediaType)type{
-    if (type == AVMediaTypeVideo) {
-        isAccessVideo = YES;
-        iSVideoNotDetermined = YES;
-    }else{
-        isAccessAudio = YES;
-        iSAudioNotDetermined = YES;
-    }
-    switch ([AVCaptureDevice authorizationStatusForMediaType:type])
-    {
-        case AVAuthorizationStatusAuthorized:
-        {
-            break;
-        }
-        case AVAuthorizationStatusNotDetermined:
-        {
-            dispatch_suspend(dispatch_get_main_queue());
-            [AVCaptureDevice requestAccessForMediaType:type completionHandler:^(BOOL granted) {
-                if (!granted) {
-                    if (type == AVMediaTypeVideo) {
-                        self->isAccessVideo = NO;
-                    }else{
-                        self->isAccessAudio = NO;
-                    }
-                }
-                dispatch_resume(dispatch_get_main_queue());
-            }];
-            break;
-        }
-        default:
-        {
-            if (type == AVMediaTypeVideo) {
-                isAccessVideo = NO;
-                iSVideoNotDetermined = NO;
-            }else{
-                isAccessAudio = NO;
-                iSAudioNotDetermined = NO;
-            }
-            break;
-        }
-    }
-}
-
--(void)creatAlertViewWith:(NSString *)title message:(NSString *) msg cancel:(NSString *)cancelMsg{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:cancelMsg style:UIAlertActionStyleCancel handler:nil]];
-    [alertController addAction:[UIAlertAction actionWithTitle:@"璁剧疆" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
-    }]];
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-
-
-#pragma 淇濆瓨鍥剧墖鍒扮浉鍐�
-- (void)saveImageToPhotosAlbum:(UIImage *)savedImage
-{
-    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
-    if (status == PHAuthorizationStatusNotDetermined)
-    {
-        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
-            if(status == PHAuthorizationStatusAuthorized)
-            {
-                UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-            }
-        }];
-    }
-    else
-    {
-        if (status == PHAuthorizationStatusAuthorized)
-        {
-            UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-        }
-    }
-}
-
-// 鎸囧畾鍥炶皟鏂规硶
-- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
-{
-    NSString *message = nil;
-    if (!error) {
-        message = saveToTheAlbumsStr;
-    }
-    else
-    {
-        message = operationFailedStr;
-    }
-    
-    [self showUIAlertView:message];
-}
-
-
-@end
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.h b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.h
deleted file mode 100644
index aed4577..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-//  ESVideo.h
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2020/6/28.
-//  Copyright 漏 2020 eTouchSky. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <ESVideoPhoneSDk/ESVideoPhone.h>
-#import <ESVideoPhoneSDk/ESError.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ESVideo : NSObject
-
-@property (nonatomic,strong) ESVideoPhone *es;
-@property (nonatomic, copy) ImageCallback snapImageCallback;
- 
-+ (instancetype)shareInstance;
-+ (void)haltSharedInstance;
-
--(void)initSDK;
-
-@end
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.m
deleted file mode 100644
index f7816a3..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.m
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-//  ESVideo.m
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2020/6/28.
-//  Copyright 漏 2020 eTouchSky. All rights reserved.
-//
-
-#import "ESVideo.h"
-#import "ESOnUtlis.h"
-
-#define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
-@interface ESVideo()
-
-
-
-
-@end
-
-static ESVideo *_sharedInstance = nil;
-static dispatch_once_t _onceToken;
-
-@implementation ESVideo{
-    ImageCallback mSnapImageCallback;
-}
-
-+ (instancetype)shareInstance {
-    dispatch_once(&_onceToken, ^{
-        _sharedInstance = [[ESVideo alloc] init];
-        if(_sharedInstance) {
-            
-        }
-        NSLog(@"ESVideo ShareInstance Did Create %p",_sharedInstance);
-    });
-    //NSLog(@"Access ESVideo %p",sharedInstance);
-    return _sharedInstance;
-}
-
-+ (void)haltSharedInstance {
-    if (_sharedInstance) {
-//        if(_sharedInstance.es){
-//            [_sharedInstance.es freeSubClass];
-//        }
-        _sharedInstance = nil;
-        _onceToken = 0;
-    }
-}
-
-
-- (instancetype)init {
-    self = [super init];
-    
-    WEAKSELF_AT
-    mSnapImageCallback = ^(UIImage *image){
-        if(weakSelf_AT.snapImageCallback){
-            weakSelf_AT.snapImageCallback(image);
-        }
-    };
-    //闂ㄥ彛鏈轰細鏈夎棰戠殑闀垮楂橈紝鏄浐瀹氱殑锛堟殏鏃惰繕涓嶇‘瀹氾級
-    _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame: CGRectMake(0, 0, APP_SCREEN_WIDTH, GetRealWidth(210)) delegate:nil imagecallBack:mSnapImageCallback];
-    
-    
-    return self;
-}
-
-- (void)dealloc {
-    NSLog(@"ESVideo SharedInstance Did Halted ");
-}
-
--(void)initSDK{
-    
-     NSLog(@"ESVideo initSDK");
-    
-}
-
-
-@end
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.m
deleted file mode 100644
index dcfcf26..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCApiKit.m
+++ /dev/null
@@ -1,86 +0,0 @@
-//
-//  LCApiKit.m
-//  LCOnDemo
-//
-//  Created by 闄堝槈涔� on 2021/4/26.
-//
-
-#import "LCApiKit.h"
-#import "LCKit.h"
-
-#define DEFAULTHOSTAPICHN @"https://openapi.lechange.cn:443" //涓浗澶ч檰(姝e紡)
-#define DEFAULTHOSTAPIOVS @"https://openapi.easy4ip.com:443" //娴峰锛堟寮忥級
-
-
-@interface LCApiKit ()
-
-
-@end
-
-
-
-@implementation LCApiKit
-
-/**
- 濡傛灉涓哄崟渚嬶紝鍙栧緱瀵瑰簲鐨勫崟渚�
-
- @return 鍗曚緥瀵硅薄
- */
-+(instancetype)sharedInstance{
-    static LCApiKit * sharedInstance = nil;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
-        sharedInstance = [[LCApiKit alloc] init];
-        sharedInstance.isChinaMainland = NO;
-    });
-    return sharedInstance;
-}
-
-/// SDK杩炴帴鏃剁殑HostApi
-- (NSString *)LCHostApi{
-    // 鑻ユ病鏈夎嚜瀹氫箟鍦板潃鐩存帴杩斿洖榛樿鍦板潃
-    self.sdkHostApi = ((self.sdkHostApi == nil || [self.sdkHostApi isEqualToString:@""]) ? (self.isChinaMainland ? DEFAULTHOSTAPICHN : DEFAULTHOSTAPIOVS) : self.sdkHostApi);
-    return self.sdkHostApi;
-}
-
-/// SDK杩炴帴鏃剁殑Host
-- (NSString *)LCSDKHost {
-    
-    NSString *host = [NSString stringWithFormat:@"%@/openapi", [self LCHostApi]];
-    NSString *textStr = [[[[[[host componentsSeparatedByString:@"//"] objectAtIndex:1] componentsSeparatedByString:@"/"] objectAtIndex:0] componentsSeparatedByString:@":"] objectAtIndex:0];
-    return textStr;
-}
-
-/// SDK杩炴帴鏃剁殑Port
-- (NSInteger)LCSDKPort {
-    NSString *host = [self LCHostApi];
-    NSString *regex = @"(:[0-9]{1,4})";
-    NSRegularExpression *regular = [[NSRegularExpression alloc]initWithPattern:regex options:NSRegularExpressionDotMatchesLineSeparators error:nil];
-    NSArray *resultArray = [regular matchesInString:host options:0 range:NSMakeRange(0, host.length)];
-    if (resultArray.count == 0) {
-        return [host containsString:@"https"]?443:80;
-    }
-    NSTextCheckingResult *result = resultArray[0];
-    NSString *textStr = [[host substringWithRange:result.range] substringFromIndex:1];
-    return [textStr integerValue];
-}
-
-/// 鍒濆鍖朙COpenSDK_Api
-- (void)initSDKOpenApi:(NSString *)lcToken
-{
-    self.lcSdkToken = lcToken;
-    LCOpenSDK_ApiParam *param = [LCOpenSDK_ApiParam new];
-    param.procotol = [[self LCHostApi] containsString:@"https"] ? 1 : 0;
-    param.addr = [self LCSDKHost];
-    param.port = [self LCSDKPort];
-    param.token = self.lcSdkToken;
-    [[LCOpenSDK_Api shareMyInstance] initOpenApi:param];
-    NSLog(@"initSDKOpenApi: %@,@%ld", [self LCSDKHost], [self LCSDKPort]);
-}
-
-/// 鎷兼帴閿欒淇℃伅
-- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code
-{
-    return [NSString stringWithFormat:@"%@(%d)",message, code];
-}
-@end
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCKit.h b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCKit.h
deleted file mode 100644
index 6a88979..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCKit.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-//  Created by 闄堝槈涔� on 2021/4/25.
-//  LCOnDemo
-//
-
-#ifndef LCKit_h
-#define LCKit_h
-
-#import "ESOnUtlis.h"
-#import "LCApiKit.h"
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h>
-#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
-
-
-
-#endif /* LCUIKit_h */
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.m
deleted file mode 100644
index 6ef9962..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnIntercomViewController.m
+++ /dev/null
@@ -1,1126 +0,0 @@
-//
-//  LCOnIntercomViewController.m
-//  LCOnDemo
-//
-//  Created by 闄堝槈涔� on 2021/4/26.
-//
-
-#import "LCOnIntercomViewController.h"
-#import <AVFoundation/AVFoundation.h>
-#import <Photos/Photos.h>
-#import <AudioToolbox/AudioToolbox.h>
-#import "LCKit.h"
-
-@interface LCOnIntercomViewController ()<LCOpenSDK_EventListener, LCOpenSDK_TalkerListener>
-
-@property (nonatomic,assign) BOOL                  playing;
-@property (nonatomic,assign) BOOL                  isInterrupt;
-@property (nonatomic,assign) BOOL                  isSpeaking;
-@property (nonatomic,strong) UIImage               *snapImage; //鎴浘
-
-@property (nonatomic, strong) UIButton *backButton;  //
-@property (nonatomic, strong) UILabel *titleUILabel;  //
-@property (nonatomic, strong) UIView *centerView;  //鍐呭鑳屾櫙View
-@property (nonatomic, strong) UIView *videoView;
-
-@property (nonatomic, strong) UIView *unlockView;
-@property (nonatomic, strong) UIButton *screenshotImgBtn;  //鎴浘
-@property (nonatomic, strong) UIButton *unlockImgBtn;  //寮�閿�
-
-
-@property (nonatomic, strong) UIButton *hangUpImgBtn;//鎸傛柇鎸夐挳
-@property (nonatomic, strong) UIButton *hangUpTextBtn;
-
-@property (nonatomic, strong) UIButton *answerImgBtn;//鎺ュ惉鎸夐挳
-@property (nonatomic, strong) UIButton *answerTextBtn;
-
-@property (nonatomic, strong) UIButton *calltimeBtn; //閫氳瘽鏃堕棿鎸夐挳
-
-//瀹氭椂鍣�
-@property (nonatomic,strong) dispatch_source_t countdownTimer;
-@property (nonatomic,strong) dispatch_source_t openDoorTimer;
-@property (nonatomic, assign) int openDoorTimeout;
-@property (nonatomic, assign) int callTimeout;
-
-/// 鎾斁鍣�
-@property (nonatomic, strong) LCOpenSDK_PlayWindow *playWindow;
-///瀵硅
-@property (strong, nonatomic) LCOpenSDK_AudioTalk *talker;
-
-@end
-
-@implementation LCOnIntercomViewController{
-    
-    BOOL isAccessAudio;
-    BOOL isAccessVideo;
-    BOOL isBackGround;
-    BOOL iSVideoNotDetermined;
-    BOOL iSAudioNotDetermined;
-    BOOL isAnswer;//鏄惁宸茬粡鐐瑰嚮鎺ュ惉杩囦簡
-    
-    NSString * tipStr;
-    NSString * okStr;
-    NSString * saveToTheAlbumsStr;
-    NSString * operationFailedStr;
-    NSString * refuseStr;
-    NSString * answerStr;
-    NSString * unlockSuccessfullyStr;
-    NSString * callingStr;
-    NSString * hangUpStr;
-    NSString * endOfCallStr;
-    //    int openDoorTimeout;
-    //鍏ㄥ眬鍙橀噺
-    SystemSoundID sound;
-    
-    CGFloat Height66;
-    bool isShowErrorAlert;
-}
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    self.view.backgroundColor = UIColor.whiteColor;
-    Height66 = GetRealWidth(66);
-    
-    [self initLlanguage];
-    [self initTopBarView];
-    [self initCentetView];
-    [self initData];
-    //    [self setAnswerBtnEnable:NO];
-    [self initESVideo];
-    //寮�濮嬪弽鍛�
-    [self StartReverseCall];
-    [self ShowCalltimeBtn:callingStr];
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
-    // Do any additional setup after loading the view.
-}
-
-
--(void)initLlanguage{
-    NSString *languageName = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
-    
-    // 绠�浣撲腑鏂�
-    if ([languageName rangeOfString:@"zh-Hans"].location != NSNotFound) {
-        tipStr = @"鎻愮ず";
-        okStr = @"纭";
-        saveToTheAlbumsStr = @"宸蹭繚瀛樿嚦鎵嬫満鐩稿唽.";
-        operationFailedStr = @"鎿嶄綔澶辫触";
-        refuseStr = @"鎷掔粷";
-        answerStr = @"鎺ュ惉";
-        hangUpStr = @"鎸傛柇";
-        unlockSuccessfullyStr = @"寮�閿佹垚鍔�";
-        callingStr = @"鏉ョ數涓�...";
-        endOfCallStr = @"閫氳瘽缁撴潫";
-    }else{
-        tipStr = @"Prompt";
-        okStr = @"OK";
-        saveToTheAlbumsStr = @"Saved to the albums.";
-        operationFailedStr = @"Operation failed.";
-        refuseStr = @"Refuse";
-        answerStr = @"Answer";
-        hangUpStr = @"Hang up";
-        unlockSuccessfullyStr = @"Unlock successfully";
-        callingStr = @"Incoming call";
-        endOfCallStr = @"End of call";
-        
-    }
-}
-
-
-
-- (void)initTopBarView {
-    UIView *TopView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, APP_TOP_BAR_HEIGHT)];
-    TopView.backgroundColor = HEXCOLORA(0xF7F7F7,1.0);
-    //    [TopView addSubview:self.backButton];
-    [TopView addSubview:self.titleUILabel];
-    [self.view addSubview:TopView];
-    TopView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-    TopView.layer.shadowOffset = CGSizeMake(0,0.5);
-    TopView.layer.shadowOpacity = 1;
-    TopView.layer.shadowRadius = 0;
-    
-}
-
-- (UIButton *)backButton{
-    if (_backButton == nil) {
-        _backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_STATUS_BAR_HEIGHT, 44, 44)];
-        [_backButton setImage:[UIImage imageNamed:@"ic_esvideo_on_back"] forState:UIControlStateNormal];
-        _backButton.imageEdgeInsets = UIEdgeInsetsMake(12,12,12,12);
-        [_backButton.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
-    }
-    return _backButton;
-}
-
--(void)backAction{
-    [self.navigationController popViewControllerAnimated:true];
-    //    [self dismissViewControllerAnimated:YES completion:NULL];
-    
-}
-
--(UILabel *)titleUILabel{
-    if (_titleUILabel == Nil) {
-        _titleUILabel = [[UILabel alloc] initWithFrame:CGRectMake(90, APP_STATUS_BAR_HEIGHT, self.view.frame.size.width - 180, 44)];
-        _titleUILabel.font = [UIFont fontWithName:APP_UIFont_BOLD size:18.0];
-        _titleUILabel.textColor = TextColor;
-        _titleUILabel.text = @"";
-        _titleUILabel.textAlignment = NSTextAlignmentCenter;
-    }
-    return _titleUILabel;
-}
-
-- (void)initCentetView {
-    [self.view addSubview:self.centerView];
-    //    [self.centerView addSubview:self.collectButton];
-    [self.centerView addSubview:self.videoView];
-    [self.centerView addSubview:self.unlockView];
-    [self.unlockView addSubview:self.screenshotImgBtn];
-    [self.unlockView addSubview:self.unlockImgBtn];
-    [self.centerView addSubview:self.hangUpImgBtn];
-    [self.centerView addSubview:self.hangUpTextBtn];
-    [self.centerView addSubview:self.answerImgBtn];
-    [self.centerView addSubview:self.answerTextBtn];
-    [self.centerView addSubview:self.calltimeBtn];
-}
-
-- (UIView *)centerView{
-    if (_centerView == nil) {
-        _centerView = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_TOP_BAR_HEIGHT, APP_SCREEN_WIDTH, APP_VISIBLE_HEIGHT)];
-        _centerView.backgroundColor = UIColor.whiteColor;
-    }
-    return _centerView;
-}
-
--(void)setRadiusWithView:(UIView *)mView{
-    //椤堕儴鍦嗚
-    UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
-    if (@available(iOS 11.0, *)) {
-        mView.layer.cornerRadius = 20;
-        mView.layer.maskedCorners =  (CACornerMask)corners;
-    }else{
-        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mView.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(20,20)];
-        //鍒涘缓 layer
-        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
-        maskLayer.frame = mView.bounds;
-        //璧嬪��
-        maskLayer.path = maskPath.CGPath;
-        mView.layer.mask = maskLayer;
-    }
-}
-
--(UIView *)videoView{
-    if (_videoView == Nil) {
-        _videoView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, GetRealWidth(210))];
-        _videoView.backgroundColor = UIColor.lightGrayColor;
-        _videoView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-        _videoView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _videoView.layer.shadowOpacity = 1;
-        _videoView.layer.shadowRadius = 0;
-    }
-    return _videoView;
-}
-
-
-- (UIView *)unlockView{
-    if (_unlockView == nil) {
-        _unlockView = [[UIView alloc] initWithFrame:CGRectMake(0, GetRealWidth(210), APP_SCREEN_WIDTH, GetRealWidth(72))];
-        _unlockView.backgroundColor = HEXCOLORA(0x232323, 1.0);
-        _unlockView.layer.backgroundColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0].CGColor;
-        _unlockView.layer.shadowColor = [UIColor colorWithRed:204/255.0 green:204/255.0 blue:204/255.0 alpha:0.4].CGColor;
-        _unlockView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _unlockView.layer.shadowOpacity = 1;
-        _unlockView.layer.shadowRadius = 0;
-    }
-    return _unlockView;
-}
-
-- (UIButton *)screenshotImgBtn{
-    if (_screenshotImgBtn == nil) {
-        _screenshotImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(44), GetRealWidth(44))];
-        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-        //        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateSelected];
-        [_screenshotImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotImgBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealWidth(38));
-    }
-    return _screenshotImgBtn;
-}
-
--(void)screenshotDownAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateNormal];
-}
-
--(void)screenshotAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-    //    //鎴浘
-    //鎴浘
-    if(self.playWindow){
-        [self saveThumbImage];
-    }
-}
-
-- (UIButton *)unlockImgBtn{
-    if (_unlockImgBtn == nil) {
-        _unlockImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, GetRealWidth(44), GetRealWidth(44))];
-        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-        //        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateSelected];
-        [_unlockImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_unlockImgBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_unlockImgBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockImgBtn.adjustsImageWhenHighlighted = NO;
-        _unlockImgBtn.center = CGPointMake((APP_SCREEN_WIDTH/4) * 3, GetRealWidth(38));
-    }
-    return _unlockImgBtn;
-}
-
--(void)unlockDownAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateNormal];
-    
-}
-
--(void)unlockAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    //    //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
-    
-}
-
-#pragma 鎸傛柇鍜屽紑閿�
-- (UIButton *)hangUpImgBtn{
-    if (_hangUpImgBtn == nil) {
-        _hangUpImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_hangUpImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_hangup"] forState:UIControlStateNormal];
-        //        [_hangUpImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_hangup"] forState:UIControlStateSelected];
-        [_hangUpImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_hangUpImgBtn addTarget:self action:@selector(hangUpAction) forControlEvents:UIControlEventTouchUpInside];
-        _hangUpImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealHeight(452) + Height66/2);
-    }
-    return _hangUpImgBtn;
-}
-
-//鎸傛柇鎸夐挳浜嬩欢
--(void)hangUpAction{
-    //1.鍥炶皟浜嬩欢
-    if(self.mESCallDelegate != NULL){
-        if(isAnswer){
-            //濡傛灉涔嬪墠宸茬粡鎺ュ惉浜嗭紝鍥炶皟鏄寕鏂�
-            [self.mESCallDelegate onHangUpAction:_callTimeout];
-        }else{
-            //濡傛灉涔嬪墠娌℃帴鍚簡锛屽洖璋冩槸鎷掓帴
-            [self.mESCallDelegate onRejectCallAction];
-        }
-    }
-    //2.椤甸潰鍏抽棴
-    [self backAction];
-}
-
-- (UIButton *)hangUpTextBtn{
-    if (_hangUpTextBtn == nil) {
-        _hangUpTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_hangUpTextBtn setTitle:@"鎷掔粷" forState:UIControlStateNormal];
-        _hangUpTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        _hangUpTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        [_hangUpTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        [_hangUpTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_hangUpTextBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside];
-        _hangUpTextBtn.center = CGPointMake(_hangUpImgBtn.center.x, GetRealHeight(530));
-        
-    }
-    return _hangUpTextBtn;
-}
-
-- (UIButton *)answerImgBtn{
-    if (_answerImgBtn == nil) {
-        _answerImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_answerImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_answer"] forState:UIControlStateNormal];
-        //        [_answerImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_answer"] forState:UIControlStateSelected];
-        [_answerImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_answerImgBtn addTarget:self action:@selector(answerIAction) forControlEvents:UIControlEventTouchUpInside];
-        
-        _answerImgBtn.center = CGPointMake((APP_SCREEN_WIDTH/4)*3, GetRealHeight(452) + Height66/2);
-    }
-    return _answerImgBtn;
-}
-
--(void)answerIAction{
-    [self stopPlaySystemSound];
-    /// 寮�鍚璁�
-    [self startTalk];
-
-    _answerImgBtn.hidden = YES;
-    _answerTextBtn.hidden = YES;
-    
-    //鎸傛柇鎸夐挳绉诲姩涓棿
-    _hangUpImgBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, _hangUpImgBtn.center.y);
-    _hangUpTextBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, _hangUpTextBtn.center.y);
-    
-    [_hangUpTextBtn setTitle:hangUpStr forState:UIControlStateNormal];
-    //寮�濮嬭鏃�
-    _callTimeout = 0;
-    [self startCountdown];
-    isAnswer = YES;
-    
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onAnswerAction];
-    }
-    
-}
-
--(void)setAnswerBtnEnable:(BOOL)ISEnable{
-    [_answerImgBtn setEnabled:ISEnable];
-    [_answerTextBtn setEnabled:ISEnable];
-}
-
-- (UIButton *)answerTextBtn{
-    if (_answerTextBtn == nil) {
-        _answerTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_answerTextBtn setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-        _answerTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _answerTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        //        _unlockTextBtn.titleLabel.textColor = TextColor;
-        [_answerTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        [_answerTextBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
-        [_answerTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_answerTextBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside];
-        _answerTextBtn.center = CGPointMake(_answerImgBtn.center.x, GetRealHeight(530));
-    }
-    return _answerTextBtn;
-}
-
-- (UIButton *)calltimeBtn{
-    if (_calltimeBtn == nil) {
-        _calltimeBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(40))];
-        _calltimeBtn.backgroundColor = HEXCOLORA(0x000000, 0.6);
-        [_calltimeBtn setTitle:@"00:00" forState:UIControlStateNormal];
-        _calltimeBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _calltimeBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        [_calltimeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
-        _calltimeBtn.hidden = YES;
-        _calltimeBtn.layer.cornerRadius = 12;
-        _calltimeBtn.center = CGPointMake(APP_CONTENT_WIDTH/2, GetRealWidth(340));
-    }
-    return _calltimeBtn;
-}
-
-
-
-
--(void)ShowTime:(int)nowTime {
-    if(_calltimeBtn.hidden) _calltimeBtn.hidden = NO;
-    NSString *timeStr = [self timeFormatted:nowTime];
-    [self setCalltimeButtonText:timeStr isTime:YES];
-}
-
--(void)ShowCalltimeBtn:(NSString*) mesStr  {
-    if(_calltimeBtn.hidden) _calltimeBtn.hidden = NO;
-    
-    [self setCalltimeButtonText:mesStr isTime:NO];
-    
-    
-}
-
-/*
- 鏍规嵁鏂囧瓧璋冩暣鎸夐挳瀹�
- */
--(void)setCalltimeButtonText:(NSString*) mesStr isTime:(BOOL)isTime
-{
-    [_calltimeBtn setTitle:mesStr forState:UIControlStateNormal];
-    if(isTime){
-        _calltimeBtn.frame = CGRectMake(0, 0, GetRealWidth(80), GetRealWidth(30));
-    }else{
-        _calltimeBtn.frame = CGRectMake(0, 0, GetRealWidth(115), GetRealWidth(30));
-    }
-    _calltimeBtn.center = CGPointMake(APP_SCREEN_WIDTH/2, GetRealWidth(340));
-}
-
-
-- (NSString *)timeFormatted:(int)totalSeconds
-{
-    int seconds = totalSeconds % 60;
-    int minutes = (totalSeconds / 60);
-    return [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];
-    
-}
-
-- (int *)getTextWidth:(UIButton*) btn
-{
-    int textWidth = 0;
-    //   聽 CGSize size = [btn.titleLabel.textsizeWithFont:[UIFontboldSystemFontOfSize:15]constrainedToSize:contentMaxSizes lineBreakMode:UILineBreakModeCharacterWrap];
-    //    textWidth = (int)fontSize.Width;
-    return textWidth;
-}
-
-
-
-/** 寮�鍚�掕鏃� */
-- (void)startCountdown {
-    
-    if (_callTimeout > 100) {
-        return;
-    }
-    _callTimeout = 0;
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _countdownTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_countdownTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_countdownTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.callTimeout >= 100 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.countdownTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                NSLog(@"瓒呮椂");
-                [weakSelf_AT backAction];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.callTimeout++;
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT ShowTime:weakSelf_AT.callTimeout];
-            });
-            
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_countdownTimer);
-    
-}
-
-#pragma 寮�閿佹垚鍔�
--(void)setOpenDoorSuccess{
-    [self setUnlock:NO];
-    _openDoorTimeout = 0;
-    [self startOpenDoorCountdown];
-    [self showUIAlertView:unlockSuccessfullyStr];
-    // 寮�閿佹垚鍔熷洖璋�
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onUnlockAction];
-    }
-}
-
--(void)setUnlock:(BOOL)ISEnable{
-    [_unlockImgBtn setEnabled:ISEnable];
-}
-
-
-
-/** 寮�鍚�掕鏃� */
-- (void)startOpenDoorCountdown {
-    
-    if (_openDoorTimeout > 20) {
-        return;
-    }
-    
-    _openDoorTimeout = 0;
-    
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _openDoorTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_openDoorTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_openDoorTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.openDoorTimeout >= 20 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.openDoorTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT setUnlock:YES];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.openDoorTimeout++;
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_openDoorTimer);
-    
-}
-
-
-
-#pragma SDK鍙瀵硅 鍔熻兘閮ㄥ垎
--(void)initESVideo{
-    //    _es = ESVideo.shareInstance.es;
-    //鍒濆鍖栦腑鏂紝杩涘叆鍚庡彴鐨則ag
-    [self.centerView addSubview:[self.playWindow getWindowView]];
-    
-    _playing = NO;
-    _isSpeaking = NO;
-    self.isInterrupt = NO;
-    isBackGround = NO;
-    
-    
-}
-
--(void)initData{
-    _titleUILabel.text = [[LCApiKit sharedInstance] currentDeviceName];
-    [_hangUpTextBtn setTitle:refuseStr forState:UIControlStateNormal];
-    [_answerTextBtn setTitle:answerStr forState:UIControlStateNormal];
-    
-}
-
-///鎾斁绐楀彛鎳掑姞杞�
-- (LCOpenSDK_PlayWindow *)playWindow {
-    if (!_playWindow) {
-        /** 1. 鍒濆鍖栨挱鏀剧獥鍙d俊鎭紝鍖呮嫭浣嶇疆澶у皬浠ュ強绱㈠紩 */
-        _playWindow = [[LCOpenSDK_PlayWindow alloc] initPlayWindow:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, GetRealWidth(210)) Index:0];
-        /** 2. 璁剧疆鎾斁绐楀彛鑳屾櫙鑹� */
-        [_playWindow setSurfaceBGColor:[UIColor blackColor]];
-        /** 3. 娣诲姞鎾斁绐楀彛鍒扮埗瑙嗗浘 */
-        //        [self.view addSubview:[m_play getWindowView]];
-        /** 4. 璁剧疆鐩戝惉瀵硅薄锛屽彲鐩戝惉鎾斁缁撴灉鍥炶皟 */
-        [_playWindow setWindowListener:(id<LCOpenSDK_EventListener>)self];
-    }
-    return _playWindow;
-}
-
-- (LCOpenSDK_AudioTalk *)talker {
-    if (!_talker) {
-        _talker = [LCOpenSDK_AudioTalk new];
-        [_talker setListener:self];
-    }
-    return _talker;
-}
-
-//- (void)onResignActive{
-//    if (self.playWindow) {
-//        [self.playWindow stopRtspReal:YES];
-//        //        self.videoManager.isPlay = NO;
-//        [self.playWindow stopAudio];
-//    }
-//}
-
-/**
- 鏆傚仠鎾斁
- */
-- (void)stopPlay {
-    if(self.playWindow){
-        [self.playWindow stopRtspReal:NO];
-        [self.playWindow stopAudio];
-    }
-    if(self.talker){
-        [self.talker stopTalk];
-        
-    }
-}
-
-- (void)startPlay {
-    
-    if(self.playWindow == NULL) return;
-    
-    [self.playWindow stopRtspReal:NO];
-    [self.playWindow stopAudio];
-    
-    /** 1. 鍒濆鍖栧疄鏃堕瑙堟挱鏀惧弬鏁板璞� */
-    LCOpenSDK_ParamReal *paramReal = [[LCOpenSDK_ParamReal alloc] init];
-    /** 2. 璁剧疆token锛宼oken鏍规嵁AppId鍜孉ppSecret璋冪敤涔愭浜戝紑鏀惧钩鍙拌幏鍙� */
-    paramReal.accessToken = [[LCApiKit sharedInstance] lcSdkToken];
-    /** 3. 璁剧疆璁惧搴忓垪鍙� */
-    paramReal.deviceID = [[LCApiKit sharedInstance] currentDeviceId];
-    /** 4. 璁剧疆璁惧閫氶亾锛屽浜庡崟閫氶亾璁惧涓�0锛� 瀵逛簬NVR绛夊閫氶亾璁惧涓哄叿浣撻�氶亾鍙� */
-    paramReal.channel = 0;
-    /** 5. 璁剧疆鐮佹祦妯″紡锛屾敮鎸佷富鐮佹祦鍜屽瓙鐮佹祦 */
-    paramReal.defiMode = DEFINITION_MODE_HG;
-    /** 6. 璁剧疆瀵嗛挜锛屽鏋滀负鐢ㄦ埛鑷畾涔夊瘑閽ヤ负鍏蜂綋瀵嗛挜锛� 闈炵敤鎴疯嚜瀹氬瘑閽ュ彲涓鸿澶囧簭鍒楀彿*/
-    paramReal.psk =  [[LCApiKit sharedInstance] currentPsk];
-    /** 7. 璁剧疆鎾斁瀵嗛挜锛岄潪蹇呬紶锛屼紶浜嗕細鎻愬崌鎷夋祦閫熷害 */
-    paramReal.playToken = [[LCApiKit sharedInstance] currentDevicePlayToken];;
-    /** 8. 鏄惁璧版媺娴佷紭鍖栵紝YES浼氭彁鍗囨媺娴侀�熷害锛屽缓璁紶YES鍗冲彲 */
-    paramReal.isOpt = YES;
-    /** 8. 寮�濮嬫挱鏀� */
-    [_playWindow playRtspReal:paramReal];
-    
-}
-
-/// 寮�鍚璁�
-- (void)startTalk {
-    if (!isAnswer) {
-        //瀵硅寮�鍚�
-//        [self.playWindow stopAudio];
-        
-        if(self.talker == NULL) return;
-        
-        [self.talker stopTalk];
-        
-        LCOpenSDK_ParamTalk *param = [[LCOpenSDK_ParamTalk alloc]init];
-        param.isOpt = YES;
-        
-        param.accessToken = [[LCApiKit sharedInstance] lcSdkToken];
-        /** 3. 璁剧疆璁惧搴忓垪鍙� */
-        param.deviceID = [[LCApiKit sharedInstance] currentDeviceId];
-        /** 4. 璁剧疆璁惧閫氶亾锛屽浜庡崟閫氶亾璁惧涓�0锛� 瀵逛簬NVR绛夊閫氶亾璁惧涓哄叿浣撻�氶亾鍙� */
-        param.channel = 0;
-        /** 6. 璁剧疆瀵嗛挜锛屽鏋滀负鐢ㄦ埛鑷畾涔夊瘑閽ヤ负鍏蜂綋瀵嗛挜锛� 闈炵敤鎴疯嚜瀹氬瘑閽ュ彲涓鸿澶囧簭鍒楀彿*/
-        param.psk =  [[LCApiKit sharedInstance] currentPsk];
-        /** 7. 璁剧疆鎾斁瀵嗛挜锛岄潪蹇呬紶锛屼紶浜嗕細鎻愬崌鎷夋祦閫熷害 */
-        param.playToken = [[LCApiKit sharedInstance] currentDevicePlayToken];;
-        
-        NSInteger result = [self.talker playTalk:param];
-        if (result != 0) {
-            //閿欒澶勭悊
-        }
-    }
-}
-
-/**
- 寮�濮嬪弽鍛�
- */
--(void)StartReverseCall{
-    [self startPlaySystemSound];
-    [self startPlay];
-}
-
-#pragma ***************************SDKListener***************************
-/**
- *  瑙嗛鎾斁鐘舵�佸洖璋�
- *
- *  @param code  閿欒鐮�(鏍规嵁type鑰屽畾)
- *  @param type  0, RTSP
- *               1, HLS
- *              99, OPENAPI
- *  @param index 鎾斁绐楀彛绱㈠紩鍊�
- */
-/** 1. 鎾斁缁撴灉鍥炶皟锛屽彲鏍规嵁閿欒鐮佽繘琛屼笉鍚屽鐞� */
-- (void)onPlayerResult:(NSString*)code Type:(NSInteger)type Index:(NSInteger)index {
-    // play
-    WEAKSELF_AT(self);
-    NSLog(@"LIVE_PLAY-CODE:%@,TYPE:%ld", code, type);
-    //鏄惁宸茬粡寮圭獥杩�
-    if(isShowErrorAlert) return;;
-    
-    dispatch_async(dispatch_get_main_queue(), ^{
-        if (99 == type) {
-            if ([code isEqualToString:@"-1000"]) {
-                //"缃戠粶璇锋眰澶辫触 (%ld)"
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfCallStr, code]];
-            } else if (![code isEqualToString:@"0"]) {
-                //"缃戠粶璇锋眰澶辫触 (%ld)"
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfCallStr, code]];
-            } else {
-                //鎴愬姛
-            }
-        }
-        if (type == 5) {
-            if ([code integerValue] != 0 && [code integerValue] != STATE_DHHTTP_OK) {
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfCallStr, code]];
-            }
-            
-        }
-        if (type == 0) {
-            
-            if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
-                return;
-            }
-            if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
-                return;
-            }
-            //鎻愮ず澶辫触
-            [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfCallStr, code]];
-        }
-    });
-    return;
-}
-
-
-/** 2. 鎾斁寮�濮嬪洖璋� */
-- (void)onPlayBegan:(NSInteger)index {
-    dispatch_async(dispatch_get_main_queue(), ^{
-        //        self.videoManager.playStatus = 1001;
-        //        [self saveThumbImage];
-        //        [self hideVideoLoadImage];
-    });
-}
-
-/**
- *  璇煶瀵硅鐘舵�佸洖璋�
- *
- *  @param error 閿欒鐮�
- *  @param type  0, RTSP
- *              99, OPENAPI
- */
-- (void)onTalkResult:(NSString *)error TYPE:(NSInteger)type
-{
-    dispatch_async(dispatch_get_main_queue(), ^{
-        NSLog(@"寮�鍚璁插洖璋僥rror = %@, type = %ld", error, (long)type);
-        WEAKSELF_AT(self);
-//        [LCProgressHUD hideAllHuds:nil];
-//        if (99 == type) {   //缃戠粶璇锋眰澶辫触
-////            dispatch_async(dispatch_get_main_queue(), ^{
-////                weakself.videoManager.isOpenAudioTalk = NO;
-////                [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-////            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//                //瀵硅杩炴帴鎴愬姛寤虹珛
-//                self.videoManager.isOpenAudioTalk = YES;
-//                [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T];
-//            });
-//            return;
-//        }
-//        dispatch_async(dispatch_get_main_queue(), ^{
-//            [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-//            weakself.videoManager.isOpenAudioTalk = NO;
-//        });
-    });
-}
-
-
-
-////鎺ュ惉
-//-(void)onAccept{
-//    if(_es){
-//        [_es onAccept];
-//    }else{
-//        NSLog(@"ES鍒濆鍖栧け璐�");
-//    }
-//
-//}
-
-
--(NSString *)getCurrentdateInterval
-{
-    NSDate *datenow = [NSDate date];
-    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
-    return timeSp;
-}
-
-
--(void)showUIAlertView:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleCancel handler:nil]];
-    [self presentViewController:alertController animated:YES completion:nil];
-    
-    //    UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:tipStr message:mes delegate:self cancelButtonTitle:okStr otherButtonTitles:nil, nil];
-    //    [alertView1 show];
-    
-}
-
-///
--(void)showUIAlertViewWithBack:(NSString *)mes
-{
-    isShowErrorAlert = true;
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self backAction];
-    }]];
-    
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-///搴旂敤绋嬩細鎸傝捣 浼氳皟鐢� applicationWillResignActive 鏂规硶
-- (void)onResignActive:(id)sender {
-    [self stopPlay];
-}
-
-
-#pragma viewDidAppear
--(void)viewDidAppear:(BOOL)animated{
-    //杩欎釜鏂规硶璇锋牴鎹瓵pp鐨勫叿浣撴儏鍐佃皟鐢�
-    
-}
-
--(void)setIsInterrupt:(BOOL)isInterrupt{
-    //    if (_es) {
-    //        _es.isInterrupt = isInterrupt;
-    //    }
-}
-
--(void)viewWillDisappear:(BOOL)animated{
-    [super viewWillDisappear:animated];
-    [self stopPlaySystemSound];
-    //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽��
-    [self stopPlay];
-    
-    //    if(_es){
-    //        [_es onHangup];
-    //        [_es onStopCapture];
-    //        [_es stopTalk];
-    //
-    //        _es.delegate = nil;
-    //        ESVideo.shareInstance.snapImageCallback = nil;
-    //
-    //
-    //    }
-    //    [_es freeSubClass];
-}
--(void)dealloc{
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
-    //    [_es freeSubClass];
-    
-    if(_openDoorTimer){
-        dispatch_source_cancel(_openDoorTimer);
-        _openDoorTimer = nil; // OK
-    }
-    if(_countdownTimer){
-        dispatch_source_cancel(_countdownTimer);
-        _countdownTimer = nil; // OK
-        
-    }
-    NSLog(@"==============dealloc");
-    
-    
-}
-
-//#pragma mark ESVideoPhoneDelegate
-////瑙嗛閫氳瘽鐨勭姸鎬佷唬鐞嗕簨浠讹紝phoneEvent涓鸿繑鍥炵殑娑堟伅閲岄潰鍖呭惈event鐘舵�佷笌涓巈vent鐩稿叧鐨勬暟鎹�
-//-(void)getPhoneEvent_UI:(NSString *)phoneEvent{
-//    NSLog(@"浜嬩欢%@", phoneEvent);
-//    NSArray *strArray = [phoneEvent componentsSeparatedByString:@"\r\n"];
-//    NSArray *eventArray = [strArray.firstObject componentsSeparatedByString:@"="];
-//    NSString *phoneEventStr = eventArray.lastObject;
-//
-//    if([phoneEventStr isEqual:@"EVT_Ringing"]){
-//        //        _es.showView.hidden = NO;
-//        //鍙嶅懠鎴愬姛 鍏佽鎺ュ惉  鐪嬮渶姹傛槸鍚﹂渶瑕佹挱鏀鹃搩澹板拰闇囧姩
-//        [self setAnswerBtnEnable:YES];
-//
-//        //           [_mCallOrAccept setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-//    }else if([phoneEventStr isEqual:@"EVT_StartStream"]){
-//
-//    } else if([phoneEventStr isEqual:@"EVT_StopStream"]){
-//        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-//    }else if([phoneEventStr isEqual:@"EVT_Connected"]){
-//
-//        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-//    }else if([phoneEventStr  isEqual:@"EVT_HangUp"]){
-//        [self showUIAlertViewWithBack:@"宸叉寕鏂�"];
-//        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-//    }else if([phoneEventStr  isEqual:@"EVT_P2POnlineStatusChanged"]){
-//        //EVT_P2PStarted(p2p鍒濆鍖朞K锛屽彲浠ヨ繛鎺�),EVT_P2POnlineStatusChangedonline=1
-//        //p2p鍒濆鍖栨垚鍔�,鎵嬫満绔洰鍓嶆病鏈夎繖涓洖璋冧簡
-//        //_mCallOrAccept.enabled = YES;
-//        //_monitorBtn.enabled = YES;
-//    }else if([phoneEventStr  isEqual:@"EVT_RECV_CUSTOM_DATA"]){
-//        //寮�闂ㄧ殑缁撴灉浠庤繖閲岃繑鍥�
-//        NSString *baseStr = [strArray[1] substringFromIndex:5];
-//        NSData *data = [[NSData alloc]initWithBase64EncodedString:baseStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
-//        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
-//        NSInteger status = [[dic valueForKey:@"status"]integerValue];
-//        if(status && status == 1){
-//            NSLog(@"寮�闂ㄦ垚鍔�");
-//            [self setOpenDoorSuccess];
-//        }else{
-//            NSLog(@"寮�闂ㄥけ璐�");
-//        }
-//    }
-//}
-
-
-#pragma mark AudioSession涓嶯otifications澶勭悊
-
-
--(void)InterruptionEndedAVAudioSessionSetActiveYES{
-    if (isBackGround) {
-        return;
-    }
-    if (self.isInterrupt == YES) {
-        [self startPlay];
-        self.isInterrupt = NO;
-    }
-}
-
-- (void)speaker:(UIButton *)sender {
-    //    [_es stopTalk];
-    //
-    //    NSString *result = nil;
-    //    //鍚瓛鐘舵�� 鎻掕�冲鍚庢嫈鎺夊悗鎭㈠鍒伴粯璁よ缃�
-    //    if (sender == nil) {
-    ////        result = [_sessionHelper speaker:NO];
-    //        [_es resetAudioCaptureIsSpeak:NO];
-    //    }else{
-    //        if(!_isSpeaking){
-    //            [_es resetAudioCaptureIsSpeak:YES];
-    ////            result = [_sessionHelper speaker:YES];
-    //            _isSpeaking = YES;
-    //        }else{
-    ////            result = [_sessionHelper speaker:NO];
-    //            [_es resetAudioCaptureIsSpeak:NO];
-    //            _isSpeaking = NO;
-    //        }
-    //    }
-    //    if (result) {
-    //        [sender setTitle:result forState:UIControlStateNormal];
-    //        [_es startTalk];
-    //    }
-    
-}
-
-
-
-/*
- 闇�瑕佹敞鎰忕殑鏄紝鏈変竴涓腑鏂紑濮嬫秷鎭笉涓�瀹氫細鏈変竴涓腑鏂粨鏉熸秷鎭紝杩欏氨鎰忓懗鐫�涓柇缁撴潫鐨勫洖璋冮噷鐨勫鐞嗛�昏緫鍙兘浼氭病鏈夎鎵ц鍒般��
- 鎵�浠ラ渶瑕佸叧娉ㄥ綋鍒囧埌鍓嶅彴杩愯鐘舵�佹椂锛屾槸涓嶆槸闇�瑕侀噸鏂版縺娲讳綘鐨� Audio Session銆�
- */
-- (void)willEnterForeground:(NSNotification*)notification{
-    NSLog(@"willEnterForeground");
-    //鍒濇鍚姩浼氳蛋杩欎釜閫氱煡(鏍归〉闈�)锛岃繖鏃跺�欐槸娌℃湁杩涘叆鍚庡彴鐨�
-    if (isBackGround) {
-        return;
-    }
-    
-    [self InterruptionEndedAVAudioSessionSetActiveYES];
-    
-}
-
-///
-- (void)willEnterBackground:(NSNotification *)notification {
-    isBackGround = YES;
-}
-
-#pragma 淇濆瓨鍥剧墖鍒扮浉鍐�
-- (void)saveImageToPhotosAlbum:(UIImage *)savedImage
-{
-    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
-    if (status == PHAuthorizationStatusNotDetermined)
-    {
-        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
-            if(status == PHAuthorizationStatusAuthorized)
-            {
-                UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-            }
-        }];
-    }
-    else
-    {
-        if (status == PHAuthorizationStatusAuthorized)
-        {
-            UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-        }
-    }
-}
-
-// 鎸囧畾鍥炶皟鏂规硶
-- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
-{
-    NSString *message = nil;
-    if (!error) {
-        message = saveToTheAlbumsStr;
-        // 鎴浘鎴愬姛鍥炶皟
-        if(self.mESCallDelegate != NULL){
-            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
-        }
-    }
-    else
-    {
-        message = operationFailedStr;
-    }
-    [self showUIAlertView:message];
-}
-
-/// 淇濆瓨瑙嗛鎴浘
-- (void)saveThumbImage {
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
-                                                         NSUserDomainMask, YES);
-    NSString *libraryDirectory = [paths objectAtIndex:0];
-    
-    NSString *myDirectory =
-    [libraryDirectory stringByAppendingPathComponent:@"ON+"];
-    NSString *picDirectory =
-    [myDirectory stringByAppendingPathComponent:@"picture"];
-    
-    NSDateFormatter *dataFormat = [[NSDateFormatter alloc] init];
-    [dataFormat setDateFormat:@"yyyyMMddHHmmss"];
-    NSString *strDate = [dataFormat stringFromDate:[NSDate date]];
-    NSString *datePath = [picDirectory stringByAppendingPathComponent:strDate];
-    NSString *picPath = [datePath stringByAppendingString:@".jpg"];
-    NSLog(@"test jpg name[%@]\n", picPath);
-    
-    NSFileManager *fileManage = [NSFileManager defaultManager];
-    NSError *pErr;
-    BOOL isDir;
-    if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
-        [fileManage createDirectoryAtPath:myDirectory
-              withIntermediateDirectories:YES
-                               attributes:nil
-                                    error:&pErr];
-    }
-    if (NO == [fileManage fileExistsAtPath:picDirectory isDirectory:&isDir]) {
-        [fileManage createDirectoryAtPath:picDirectory
-              withIntermediateDirectories:YES
-                               attributes:nil
-                                    error:&pErr];
-    }
-    [self.playWindow snapShot:picPath];
-    UIImage *image = [UIImage imageWithContentsOfFile:picPath];
-    [self saveImageToPhotosAlbum:image];
-    
-}
-
-#pragma 闇囧姩瀹炵幇璨屼技鍜孲DK鍐茬獊 涓嶈兘瀹炵幇闇囧姩
-//寮�濮嬫挱鏀剧殑鏃跺�欒皟鐢�
--(void)startPlaySystemSound{
-    
-//    return;
-    //    //闇囧姩鐨勬彁绀烘枃浠跺悕鏀惧埌璧勬簮鐩綍涓�
-    //    NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
-    //    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
-    //鍒嗗埆娉ㄥ唽閾冨0鍜岄渿鍔ㄥ畬鍚庣殑鍥炶皟
-    AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, LCVibrationCompleteCallback, NULL);
-    //    AudioServicesAddSystemSoundCompletion(sound, NULL, NULL, soundCompleteCallback, NULL);
-    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//寮�濮嬮渿鍔�
-    //    AudioServicesPlaySystemSound(sound);//寮�濮嬫挱鏀鹃搩澹�
-}
-
-//鎵嬪姩鍋滄鎾斁鐨勬椂鍊欒皟鐢�
-- (void)stopPlaySystemSound{
-//    return;
-    NSLog(@"stop PlaySystemSound");
-    stopRingAndVibration();
-}
-
-//鍋滄鍝嶉搩鍜岄渿鍔紝绉婚櫎鍥炶皟骞跺鐞嗘帀閾冨0鍜岄渿鍔�
-void stopRingAndVibration() {
-    AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
-    //    AudioServicesRemoveSystemSoundCompletion(sound);
-    AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);
-    //    AudioServicesDisposeSystemSoundID(sound);
-}
-
-//闇囧姩瀹屾垚鍥炶皟锛屽洜涓洪渿鍔ㄤ竴涓嬩究浼氳皟鐢ㄤ竴娆★紝杩欓噷寤惰繜800ms鍐嶇户缁渿鍔紝鍜屽井淇″樊涓嶅锛屾椂闂撮暱鐭彲鑷繁鎺у埗銆傚弬鏁皊ound鍗充负娉ㄥ唽鍥炶皟鏃朵紶鐨勭涓�涓弬鏁�
-void LCVibrationCompleteCallback(SystemSoundID sound,void * clientData) {
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(800 * NSEC_PER_MSEC)), dispatch_get_global_queue(0, 0), ^{
-        AudioServicesPlaySystemSound(sound);
-    });
-}
-
-////閾冨0鎾斁瀹屾垚鍥炶皟锛岃繖绉嶆柟娉晉鎾斁鐨勯煶棰戦檺鍒跺湪30绉掑唴锛屾挱鏀惧畬鐩存帴鍝嶉搩鍜岄渿鍔�
-//void soundCompleteCallback(SystemSoundID sound,void * clientData) {
-//
-//    stopRingAndVibration();
-//}
-
-
-
-
-
-@end
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.h b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.h
deleted file mode 100644
index cd7d460..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-//  LCOnMonitorViewController.h
-//  LCOnDemo
-//
-//  Created by 闄堝槈涔� on 2021/4/26.
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface LCOnMonitorViewController : UIViewController
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.m b/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.m
deleted file mode 100644
index e0294c2..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/LCSDK/LCOnMonitorViewController.m
+++ /dev/null
@@ -1,1074 +0,0 @@
-//
-//  LCOnMonitorViewController.m
-//  LCOnDemo
-//
-//  Created by 闄堝槈涔� on 2021/4/26.
-//
-
-#import "LCOnMonitorViewController.h"
-#import <AVFoundation/AVFoundation.h>
-#import <Photos/Photos.h>
-#import "LCKit.h"
-
-
-
-@interface LCOnMonitorViewController ()<LCOpenSDK_EventListener>
-
-@property (nonatomic,assign) BOOL                  playing;
-@property (nonatomic,assign) BOOL                  isInterrupt;
-@property (nonatomic,assign) BOOL                  isSpeaking;
-@property (nonatomic,strong) UIImage               *snapImage; //鎴浘
-
-
-@property (nonatomic, strong) UIButton *backButton;  //
-@property (nonatomic, strong) UILabel *titleUILabel;  //
-@property (nonatomic, strong) UIView *centerView;  //鍐呭鑳屾櫙View
-@property (nonatomic, strong) UIView *videoView;
-
-@property (nonatomic, strong) UIButton *screenshotImgBtn;  //
-@property (nonatomic, strong) UIButton *screenshotTextBtn;  //
-
-@property (nonatomic, strong) UIButton *unlockImgBtn;  //
-@property (nonatomic, strong) UIButton *unlockTextBtn;  //
-@property (nonatomic,strong) dispatch_source_t openDoorTimer;
-@property (nonatomic, assign) int openDoorTimeout;
-
-
-/// 鎾斁鍣�
-@property (nonatomic, strong) LCOpenSDK_PlayWindow *playWindow;
-
-@end
-
-@implementation LCOnMonitorViewController
-{
-    BOOL isAccessAudio;
-    BOOL isAccessVideo;
-    BOOL isBackGround;
-    BOOL iSVideoNotDetermined;
-    BOOL iSAudioNotDetermined;
-    
-    NSString * tipStr;
-    NSString * okStr;
-    NSString * saveToTheAlbumsStr;
-    NSString * operationFailedStr;
-    NSString * screenshotStr;
-    NSString * unlockStr;
-    NSString * endOfMonitoringStr;
-    NSString * unlockSuccessfullyStr;
-    
-    NSString * LCSdkToken;
-    NSString * LCHostApi;
-    
-    CGFloat Height66;
-    bool isShowErrorAlert;
-    //    int _openDoorTimeout;
-}
-
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    self.view.backgroundColor = UIColor.whiteColor;
-    Height66 = GetRealWidth(66);
-    [self initLlanguage];
-    [self initTopBarView];
-    [self initCentetView];
-    [self initData];
-    [self initESVideo];
-    [self StartMonitoring];
-    
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
-    // Do any additional setup after loading the view.
-}
-
-
-
--(void)initLlanguage{
-    NSString *languageName = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
-    
-    // 绠�浣撲腑鏂�
-    if ([languageName rangeOfString:@"zh-Hans"].location != NSNotFound) {
-        tipStr = @"鎻愮ず";
-        okStr = @"纭";
-        saveToTheAlbumsStr = @"宸蹭繚瀛樿嚦鎵嬫満鐩稿唽.";
-        operationFailedStr = @"鎿嶄綔澶辫触";
-        screenshotStr = @"鎴浘";
-        unlockStr = @"寮�閿�";
-        endOfMonitoringStr = @"鐩戣缁撴潫";
-        unlockSuccessfullyStr = @"寮�閿佹垚鍔�";
-        
-    }else{
-        tipStr = @"Prompt";
-        okStr = @"OK";
-        saveToTheAlbumsStr = @"Saved to the albums.";
-        operationFailedStr = @"Operation failed.";
-        screenshotStr = @"Screenshot";
-        unlockStr = @"Unlock";
-        endOfMonitoringStr = @"End of monitoring";
-        unlockSuccessfullyStr = @"Unlock successfully";
-    }
-    
-    
-}
-
-
-//椤堕儴View
-- (void)initTopBarView {
-    UIView *TopView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, APP_TOP_BAR_HEIGHT)];
-    TopView.backgroundColor = HEXCOLORA(0xF7F7F7,1.0);
-    [TopView addSubview:self.backButton];
-    [TopView addSubview:self.titleUILabel];
-    //    [TopView addSubview:self.moreButton];
-    [self.view addSubview:TopView];
-    TopView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-    TopView.layer.shadowOffset = CGSizeMake(0,0.5);
-    TopView.layer.shadowOpacity = 1;
-    TopView.layer.shadowRadius = 0;
-}
-
-- (UIButton *)backButton{
-    if (_backButton == nil) {
-        _backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_STATUS_BAR_HEIGHT, 44, 44)];
-        [_backButton setImage:[UIImage imageNamed:@"ic_esvideo_on_back"] forState:UIControlStateNormal];
-        _backButton.imageEdgeInsets = UIEdgeInsetsMake(12,12,12,12);
-        [_backButton.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
-    }
-    return _backButton;
-}
-
--(void)backAction{
-    [self.navigationController popViewControllerAnimated:true];
-    //    [self dismissViewControllerAnimated:YES completion:NULL];
-}
-
--(UILabel *)titleUILabel{
-    if (_titleUILabel == Nil) {
-        _titleUILabel = [[UILabel alloc] initWithFrame:CGRectMake(90, APP_STATUS_BAR_HEIGHT, self.view.frame.size.width - 180, 44)];
-        _titleUILabel.font = [UIFont fontWithName:APP_UIFont_BOLD size:18.0];
-        _titleUILabel.textColor = TextColor;
-        _titleUILabel.text = @"";
-        _titleUILabel.textAlignment = NSTextAlignmentCenter;
-    }
-    return _titleUILabel;
-}
-
-- (void)initCentetView {
-    [self.view addSubview:self.centerView];
-    //    [self.centerView addSubview:self.collectButton];
-    //    [self.centerView addSubview:self.homeView];
-    [self.centerView addSubview:self.videoView];
-    [self.centerView addSubview:self.screenshotImgBtn];
-    [self.centerView addSubview:self.screenshotTextBtn];
-    [self.centerView addSubview:self.unlockImgBtn];
-    [self.centerView addSubview:self.unlockTextBtn];
-    
-}
-
-- (UIView *)centerView{
-    if (_centerView == nil) {
-        _centerView = [[UIButton alloc] initWithFrame:CGRectMake(0, APP_TOP_BAR_HEIGHT, APP_SCREEN_WIDTH, APP_VISIBLE_HEIGHT)];
-        _centerView.backgroundColor = UIColor.whiteColor;
-        //        [self setRadiusWithView:_centerView];
-        
-    }
-    return _centerView;
-}
-
--(void)setRadiusWithView:(UIView *)mView{
-    //椤堕儴鍦嗚
-    UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
-    if (@available(iOS 11.0, *)) {
-        mView.layer.cornerRadius = 20;
-        mView.layer.maskedCorners =  (CACornerMask)corners;
-    }else{
-        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:mView.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(20,20)];
-        //鍒涘缓 layer
-        CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
-        maskLayer.frame = mView.bounds;
-        //璧嬪��
-        maskLayer.path = maskPath.CGPath;
-        mView.layer.mask = maskLayer;
-    }
-}
-
--(UIView *)videoView{
-    if (_videoView == Nil) {
-        _videoView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, GetRealWidth((210)))];
-        _videoView.backgroundColor = UIColor.lightGrayColor;
-        _videoView.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.25].CGColor;
-        _videoView.layer.shadowOffset = CGSizeMake(0,0.5);
-        _videoView.layer.shadowOpacity = 1;
-        _videoView.layer.shadowRadius = 0;
-    }
-    return _videoView;
-}
-
-#pragma 鎴浘鍥炬爣鎸夐挳
-- (UIButton *)screenshotImgBtn{
-    if (_screenshotImgBtn == nil) {
-        _screenshotImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-        //        [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateSelected];
-        [_screenshotImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotImgBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotImgBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotImgBtn.center = CGPointMake(APP_SCREEN_WIDTH/4, GetRealWidth(276) + Height66/2);
-        
-    }
-    return _screenshotImgBtn;
-}
-
--(void)screenshotDownAction{
-    
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_select"] forState:UIControlStateNormal];
-    [_screenshotTextBtn setTitleColor:TextSelectColor forState:UIControlStateNormal];
-}
-
-
--(void)screenshotAction{
-    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
-    [_screenshotTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-    
-    //鎴浘
-    if(self.playWindow){
-        [self saveThumbImage];
-    }
-}
-
-#pragma 鎴浘鏂囧瓧鎸夐挳
-- (UIButton *)screenshotTextBtn{
-    if (_screenshotTextBtn == nil) {
-        _screenshotTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_screenshotTextBtn setTitle:@"鎴浘" forState:UIControlStateNormal];
-        _screenshotTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        _screenshotTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        [_screenshotTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        //        [_screenshotTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_screenshotTextBtn addTarget:self action:@selector(screenshotAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_screenshotTextBtn addTarget:self action:@selector(screenshotDownAction) forControlEvents:UIControlEventTouchDown];
-        _screenshotTextBtn.adjustsImageWhenHighlighted = NO;
-        _screenshotTextBtn.center = CGPointMake(_screenshotImgBtn.center.x, GetRealWidth(364));
-    }
-    return _screenshotTextBtn;
-}
-
-- (UIButton *)unlockImgBtn{
-    if (_unlockImgBtn == nil) {
-        _unlockImgBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Height66, Height66)];
-        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-        //        [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateSelected];
-        [_unlockImgBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
-        [_unlockImgBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
-        [_unlockImgBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockImgBtn.adjustsImageWhenHighlighted = NO;
-        _unlockImgBtn.center = CGPointMake((APP_SCREEN_WIDTH / 4) * 3, GetRealWidth(276) + Height66/2);
-    }
-    return _unlockImgBtn;
-}
-
--(void)unlockDownAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_select"] forState:UIControlStateNormal];
-    [_unlockTextBtn setTitleColor:TextSelectColor forState:UIControlStateNormal];
-}
-
--(void)unlockAction{
-    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-    //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
-}
-
-- (UIButton *)unlockTextBtn{
-    if (_unlockTextBtn == nil) {
-        _unlockTextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, GetRealWidth(100), GetRealWidth(20))];
-        [_unlockTextBtn setTitle:@"寮�閿�" forState:UIControlStateNormal];
-        _unlockTextBtn.titleLabel.font = [UIFont fontWithName:APP_UIFont size:14.0];
-        _unlockTextBtn.titleLabel.textAlignment = NSTextAlignmentCenter;
-        //        _unlockTextBtn.titleLabel.textColor = TextColor;
-        [_unlockTextBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
-        [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
-        //        [_unlockTextBtn setTitleColor:TextSelectColor forState:UIControlStateSelected];
-        [_unlockTextBtn addTarget:self action:@selector(unlockAction) forControlEvents:UIControlEventTouchUpInside];
-        [_unlockTextBtn addTarget:self action:@selector(unlockDownAction) forControlEvents:UIControlEventTouchDown];
-        _unlockTextBtn.adjustsImageWhenHighlighted = NO;
-        _unlockTextBtn.center = CGPointMake(_unlockImgBtn.center.x, GetRealWidth(364));
-    }
-    return _unlockTextBtn;
-}
-
-#pragma 寮�閿佹垚鍔�
--(void)setOpenDoorSuccess{
-    [self setUnlock:NO];
-    _openDoorTimeout = 0;
-    [self startOpenDoorCountdown];
-    [self showUIAlertView:unlockSuccessfullyStr];
-    //    // 寮�閿佹垚鍔熷洖璋�
-    //    if(self.mESCallDelegate != NULL){
-    //        [self.mESCallDelegate onUnlockAction];
-    //    }
-}
-
--(void)setUnlock:(BOOL)ISEnable{
-    [_unlockImgBtn setEnabled:ISEnable];
-    [_unlockTextBtn setEnabled:ISEnable];
-}
-
-/** 寮�鍚�掕鏃� */
-- (void)startOpenDoorCountdown {
-    
-    if (_openDoorTimeout > 20) {
-        return;
-    }
-    
-    _openDoorTimeout = 0;
-    
-    // GCD瀹氭椂鍣�
-    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    
-    _openDoorTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
-    
-    dispatch_source_set_timer(_openDoorTimer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //姣忕鎵ц
-    
-    dispatch_source_set_event_handler(_openDoorTimer, ^{
-        WEAKSELF_AT
-        if(weakSelf_AT.openDoorTimeout >= 20 ){// 璁℃椂缁撴潫
-            // 鍏抽棴瀹氭椂鍣�
-            dispatch_source_cancel(weakSelf_AT.openDoorTimer);
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [weakSelf_AT setUnlock:YES];
-                
-            });
-            
-        }else{// 璁℃椂涓�
-            weakSelf_AT.openDoorTimeout++;
-            
-        }
-    });
-    
-    // 寮�鍚畾鏃跺櫒
-    dispatch_resume(_openDoorTimer);
-    
-}
-
-
-
-#pragma SDK鍙瀵硅 鍔熻兘閮ㄥ垎
-
--(void)initESVideo{
-    
-    [self.centerView addSubview:[self.playWindow getWindowView]];
-}
-
--(void)initData{
-    
-    [_screenshotTextBtn setTitle:screenshotStr forState:UIControlStateNormal];
-    [_unlockTextBtn setTitle:unlockStr forState:UIControlStateNormal];
-    _titleUILabel.text = [[LCApiKit sharedInstance] currentDeviceName];
-    //    [_collectButton setSelected:_isCollect];
-}
-
-//- (void)initSDKLog {
-//    LCOpenSDK_LogInfo *info = [LCOpenSDK_LogInfo new];
-//    info.levelType = LogLevelTypeDebug;
-//    [[LCOpenSDK_Log shareInstance] setLogInfo:info];
-//}
-
-///鎾斁绐楀彛鎳掑姞杞�
-- (LCOpenSDK_PlayWindow *)playWindow {
-    if (!_playWindow) {
-        /** 1. 鍒濆鍖栨挱鏀剧獥鍙d俊鎭紝鍖呮嫭浣嶇疆澶у皬浠ュ強绱㈠紩 */
-        _playWindow = [[LCOpenSDK_PlayWindow alloc] initPlayWindow:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, GetRealWidth(210)) Index:0];
-        /** 2. 璁剧疆鎾斁绐楀彛鑳屾櫙鑹� */
-        [_playWindow setSurfaceBGColor:[UIColor blackColor]];
-        /** 3. 娣诲姞鎾斁绐楀彛鍒扮埗瑙嗗浘 */
-        //        [self.view addSubview:[m_play getWindowView]];
-        /** 4. 璁剧疆鐩戝惉瀵硅薄锛屽彲鐩戝惉鎾斁缁撴灉鍥炶皟 */
-        [_playWindow setWindowListener:(id<LCOpenSDK_EventListener>)self];
-    }
-    return _playWindow;
-}
-
-//- (void)onResignActive{
-//    if (self.playWindow) {
-//        [self.playWindow stopRtspReal:YES];
-//        //        self.videoManager.isPlay = NO;
-//        [self.playWindow stopAudio];
-//    }
-//}
-
-/**
- 鏆傚仠鎾斁
- */
-- (void)stopPlay {
-    if(self.playWindow){
-        [self.playWindow stopRtspReal:NO];
-        [self.playWindow stopAudio];
-    }
-}
-
-- (void)startPlay {
-    
-    if(self.playWindow == NULL) return;
-    
-    [self.playWindow stopRtspReal:NO];
-    [self.playWindow stopAudio];
-    
-    /** 1. 鍒濆鍖栧疄鏃堕瑙堟挱鏀惧弬鏁板璞� */
-    LCOpenSDK_ParamReal *paramReal = [[LCOpenSDK_ParamReal alloc] init];
-    /** 2. 璁剧疆token锛宼oken鏍规嵁AppId鍜孉ppSecret璋冪敤涔愭浜戝紑鏀惧钩鍙拌幏鍙� */
-    paramReal.accessToken = [[LCApiKit sharedInstance] lcSdkToken];
-    /** 3. 璁剧疆璁惧搴忓垪鍙� */
-    paramReal.deviceID = [[LCApiKit sharedInstance] currentDeviceId];
-    /** 4. 璁剧疆璁惧閫氶亾锛屽浜庡崟閫氶亾璁惧涓�0锛� 瀵逛簬NVR绛夊閫氶亾璁惧涓哄叿浣撻�氶亾鍙� */
-    paramReal.channel = 0;
-    /** 5. 璁剧疆鐮佹祦妯″紡锛屾敮鎸佷富鐮佹祦鍜屽瓙鐮佹祦 */
-    paramReal.defiMode = DEFINITION_MODE_HG;
-    /** 6. 璁剧疆瀵嗛挜锛屽鏋滀负鐢ㄦ埛鑷畾涔夊瘑閽ヤ负鍏蜂綋瀵嗛挜锛� 闈炵敤鎴疯嚜瀹氬瘑閽ュ彲涓鸿澶囧簭鍒楀彿*/
-    paramReal.psk =  [[LCApiKit sharedInstance] currentPsk];
-    /** 7. 璁剧疆鎾斁瀵嗛挜锛岄潪蹇呬紶锛屼紶浜嗕細鎻愬崌鎷夋祦閫熷害 */
-    paramReal.playToken = [[LCApiKit sharedInstance] currentDevicePlayToken];;
-    /** 8. 鏄惁璧版媺娴佷紭鍖栵紝YES浼氭彁鍗囨媺娴侀�熷害锛屽缓璁紶YES鍗冲彲 */
-    paramReal.isOpt = YES;
-    /** 8. 寮�濮嬫挱鏀� */
-    [_playWindow playRtspReal:paramReal];
-    
-}
-
-
-
-/**
- *  瑙嗛鎾斁鐘舵�佸洖璋�
- *
- *  @param code  閿欒鐮�(鏍规嵁type鑰屽畾)
- *  @param type  0, RTSP
- *               1, HLS
- *              99, OPENAPI
- *  @param index 鎾斁绐楀彛绱㈠紩鍊�
- */
-/** 1. 鎾斁缁撴灉鍥炶皟锛屽彲鏍规嵁閿欒鐮佽繘琛屼笉鍚屽鐞� */
-- (void)onPlayerResult:(NSString*)code Type:(NSInteger)type Index:(NSInteger)index {
-    // play
-    WEAKSELF_AT(self);
-    NSLog(@"LIVE_PLAY-CODE:%@,TYPE:%ld", code, type);
-    //鏄惁宸茬粡寮圭獥杩�
-    if(isShowErrorAlert) return;;
-    
-    dispatch_async(dispatch_get_main_queue(), ^{
-        if (99 == type) {
-            if ([code isEqualToString:@"-1000"]) {
-                //"缃戠粶璇锋眰澶辫触 (%ld)"
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfMonitoringStr, code]];
-            } else if (![code isEqualToString:@"0"]) {
-                //"缃戠粶璇锋眰澶辫触 (%ld)"
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfMonitoringStr, code]];
-            } else {
-                //鎴愬姛
-            }
-        }
-        if (type == 5) {
-            if ([code integerValue] != 0 && [code integerValue] != STATE_DHHTTP_OK) {
-                [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfMonitoringStr, code]];
-            }
-            
-        }
-        if (type == 0) {
-            
-            if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
-                return;
-            }
-            if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
-                return;
-            }
-            //鎻愮ず澶辫触
-            [weakSelf_AT showUIAlertViewWithBack:[NSString stringWithFormat:@"%@(%@)",self->endOfMonitoringStr, code]];
-        }
-    });
-    return;
-}
-
-
-/** 2. 鎾斁寮�濮嬪洖璋� */
-- (void)onPlayBegan:(NSInteger)index {
-    dispatch_async(dispatch_get_main_queue(), ^{
-        //        self.videoManager.playStatus = 1001;
-        //        [self saveThumbImage];
-        //        [self hideVideoLoadImage];
-    });
-}
-
-
-/**
- 寮�濮嬬洃鎺�
- */
--(void)StartMonitoring{
-    
-    if (self.playWindow) {
-        [self startPlay];
-    }
-    
-}
-
--(NSString *)getCurrentdateInterval
-{
-    NSDate *datenow = [NSDate date];
-    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
-    return timeSp;
-}
-
--(void)showUIAlertView:(NSString *)mes
-{
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleCancel handler:nil]];
-    [self presentViewController:alertController animated:YES completion:nil];
-    
-}
-
-///
--(void)showUIAlertViewWithBack:(NSString *)mes
-{
-    isShowErrorAlert = true;
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:mes preferredStyle:UIAlertControllerStyleAlert];
-    [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        [self backAction];
-    }]];
-    
-    [self presentViewController:alertController animated:YES completion:nil];
-}
-
-
-
-#pragma viewDidAppear
--(void)viewDidAppear:(BOOL)animated{
-    //杩欎釜鏂规硶璇锋牴鎹瓵pp鐨勫叿浣撴儏鍐佃皟鐢�
-    //鍦╲iewDidLoad涓� 璋冪敤requestAccessForAVMediaType: 鏄负浜嗚妭绾﹀垵濮嬪寲鐨勬椂闂�
-    //鍦╲iewDidAppear涓皟鐢╮equestAccessForAVMediaType: 鏄负浜嗗脊鍑烘彁绀烘墦寮�鏉冮檺鐨凙lert
-    //娴嬭瘯鐨勬椂鍊欏彂鐜板涓嬫儏鍐碉細濡傛灉鍙妸鎺堟潈鏂规硶鏀惧埌ViewDidAppear鏂规硶涓鐞嗭紝濡傛灉娌℃湁鎺堟潈鍦ㄥ垵濮嬪寲閲囬泦鍣ㄦ椂浼氬け璐ャ�傚悓鏍稟lertView浼氬洜涓篤iew娌℃湁didLoad鑰屽鑷磒resent涓嶅嚭鏉�
-    
-    //    if (!isAccessVideo || !isAccessAudio) {
-    //        [self requestAccessForAVMedia];
-    //    }
-    
-    //    if (!isAccessAudio) {
-    //        [self requestAccessForAVMedia];
-    //    }
-}
-
--(void)setIsInterrupt:(BOOL)isInterrupt{
-    //    if (_es) {
-    //        _es.isInterrupt = isInterrupt;
-    //    }
-}
-
-- (void)viewWillAppear:(BOOL)animated {
-    [super viewWillAppear:animated];
-    
-    
-}
--(void)viewWillDisappear:(BOOL)animated{
-    [super viewWillDisappear:animated];
-    
-    [self stopPlay];
-    
-    //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽��
-    //    if(_es){
-    //        [_es onHangup];
-    //        [_es onStopCapture];
-    //        [_es stopTalk];
-    //
-    //        _es.delegate = nil;
-    //        ESVideo.shareInstance.snapImageCallback = nil;
-    //        //        _es.showView.removeFromSuperview;
-    //    }
-    //    [_es freeSubClass];
-}
-
--(void)dealloc{
-    NSLog(@"==============dealloc  1");
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
-    NSLog(@"==============dealloc  2");
-    //    [_es freeSubClass];
-    //     NSLog(@"==============dealloc  3");
-    
-    if(_openDoorTimer){
-        dispatch_source_cancel(_openDoorTimer);
-        _openDoorTimer = nil; // OK
-        
-    }
-    NSLog(@"==============dealloc 3");
-}
-
-//#pragma mark ESVideoPhoneDelegate
-////瑙嗛閫氳瘽鐨勭姸鎬佷唬鐞嗕簨浠讹紝phoneEvent涓鸿繑鍥炵殑娑堟伅閲岄潰鍖呭惈event鐘舵�佷笌涓巈vent鐩稿叧鐨勬暟鎹�
-//-(void)getPhoneEvent_UI:(NSString *)phoneEvent{
-//    NSLog(@"==============ESVideoPhoneDelegate浜嬩欢%@", phoneEvent);
-//    NSArray *strArray = [phoneEvent componentsSeparatedByString:@"\r\n"];
-//    NSArray *eventArray = [strArray.firstObject componentsSeparatedByString:@"="];
-//    NSString *phoneEventStr = eventArray.lastObject;
-//
-//    if([phoneEventStr isEqual:@"EVT_Ringing"]){
-//
-//        //           [_mCallOrAccept setTitle:@"鎺ュ惉" forState:UIControlStateNormal];
-//    }else if([phoneEventStr isEqual:@"EVT_StartStream"]){
-//
-//    } else if([phoneEventStr isEqual:@"EVT_StopStream"]){
-//        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-//    }else if([phoneEventStr isEqual:@"EVT_Connected"]){
-//        [self speaker:nil];
-//        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-//    }else if([phoneEventStr isEqual:@"EVT_MonitorConnected"]){
-//        _es.showView.hidden = NO;
-//        [self speaker:nil];
-//        //           [_mCallOrAccept setTitle:@"閫氳瘽涓�..." forState:UIControlStateNormal];
-//    }else if([phoneEventStr  isEqual:@"EVT_HangUp"]){
-//
-//
-//        //        [CBToast showToastAction:endOfMonitoringStr];
-//        [self showUIAlertViewWithBack:endOfMonitoringStr];
-//        //        [self backAction];
-//
-//
-//
-//        //           [_mCallOrAccept setTitle:@"鍙嶅懠" forState:UIControlStateNormal];
-//    }else if([phoneEventStr  isEqual:@"EVT_P2POnlineStatusChanged"]){
-//        //EVT_P2PStarted(p2p鍒濆鍖朞K锛屽彲浠ヨ繛鎺�),EVT_P2POnlineStatusChangedonline=1
-//        //p2p鍒濆鍖栨垚鍔�,鎵嬫満绔洰鍓嶆病鏈夎繖涓洖璋冧簡
-//        //_mCallOrAccept.enabled = YES;
-//        //_monitorBtn.enabled = YES;
-//    }else if([phoneEventStr  isEqual:@"EVT_RECV_CUSTOM_DATA"]){
-//        //寮�闂ㄧ殑缁撴灉浠庤繖閲岃繑鍥�
-//        NSString *baseStr = [strArray[1] substringFromIndex:5];
-//        NSData *data = [[NSData alloc]initWithBase64EncodedString:baseStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
-//        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
-//        NSInteger status = [[dic valueForKey:@"status"]integerValue];
-//        if(status && status == 1){
-//            NSLog(@"寮�闂ㄦ垚鍔�");
-//
-//
-//            [self setOpenDoorSuccess];
-//        }else{
-//            NSLog(@"寮�闂ㄥけ璐�");
-//        }
-//    }
-//}
-//
-//-(void)getAErrorForESVideoPhone:(NSString *)errorStr type:(NSUInteger)errortype{
-//    NSLog(@"==============ErrorForESVideo閿欒%@", errorStr);
-//    //娌℃湁鎺堟潈
-//    if (errortype == LMPVideoCaptureErrorNotAuthorized) {
-//        NSLog(@"閿欒%@", errorStr);
-//    }
-//}
-//#pragma mark AudioSession涓嶯otifications澶勭悊
-//
-//- (void) addObservers
-//{
-//    //    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name: UIKeyboardWillChangeFrameNotification  object: nil];
-//
-//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRuntimeError:) name:AVCaptureSessionRuntimeErrorNotification object:nil];
-//
-//    //isAccessVideo锛屽鏋淎VCaptureSession娌℃湁new鍑烘潵涓嶄細鏀跺埌閫氱煡
-//    if (isAccessVideo) {
-//        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionWasInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:nil];
-//        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionInterruptionEnded:) name:AVCaptureSessionInterruptionEndedNotification object:nil];
-//    }else{
-//        //object:涓簄il 鍙兘涓嶄細瑙﹀彂閫氱煡
-//        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:)
-//                                                     name:AVAudioSessionInterruptionNotification object:[AVAudioSession
-//                                                                                                         sharedInstance]];
-//    }
-//
-//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChangeListenerCallback:)   name:AVAudioSessionRouteChangeNotification object:nil];
-//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
-//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
-//}
-//
-//- (void) sessionRuntimeError:(NSNotification*)notification
-//{
-//    NSError* error = notification.userInfo[AVCaptureSessionErrorKey];
-//    NSLog(@"Capture session runtime error: %@", error);
-//
-//    // If media services were reset, and the last start succeeded, restart the session.
-//    if (error.code == AVErrorMediaServicesWereReset) {
-//        [_es onStopCapture];
-//        [_es stopTalk];
-//    }
-//}
-//
-//- (void)handleInterruption:(NSNotification *)notification
-//{
-//    NSUInteger interruptionType = [[[notification userInfo]
-//                                    objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
-//
-//    if (AVAudioSessionInterruptionTypeBegan == interruptionType)
-//    {
-//        if (isBackGround) {
-//            return;
-//        }
-//        [_es stopTalk];
-//    }
-//    else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
-//    {
-//        if (self.isInterrupt == NO) {
-//            return;
-//        }else{
-//            //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-//            [self InterruptionEndedAVAudioSessionSetActiveYES];
-//        }
-//    }
-//}
-//
-////AVAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-//- (void) sessionWasInterrupted:(NSNotification*)notification
-//{
-//    if (_playing == YES) {
-//        self.isInterrupt = YES;
-//        //AVCaptureSessionInterruptionReason
-//        if (@available(iOS 9.0, *)) {
-//            NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue]; //鐢佃瘽涓柇鏄�1
-//            NSLog(@"Capture session was interrupted with reason %ld", (long)reason);
-//
-//            //闊抽纭欢鏆傛椂涓嶅彲鐢ㄨ�岄�犳垚鐨勪腑鏂紝渚嬪锛岀數璇濇垨璀︽姤銆�
-//            if (reason == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient ||
-//                reason == AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient) {
-//                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient");
-//
-//                //VAudioPlayer 绫诲拰 AVAudioRecorder 绫伙紝褰撳彂鐢熶腑鏂椂锛岀郴缁熶細鑷姩鏆傚仠鎾斁鎴栧綍鍒�
-//                //Audio Queue Services, I/O audio unit
-//                [_es onStopCapture];
-//                [_es stopTalk];
-//                /*
-//                 NSError *error = nil;
-//                 [[AVAudioSession sharedInstance] setActive:NO error:&error];
-//                 if (error) {
-//                 NSLog(@"sessionWasInterruptedSetActiveNO error:%@", error);
-//                 }
-//                 */
-//            }else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground){
-//                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableInBackground");
-//                //濡傛灉鏄數璇濅腑鏂紝涓嶄細璧拌繘鍏ュ悗鍙扮殑閫氱煡锛岃繘鍏ュ悗鍙板啀鍒囨崲鍒板墠鍙拌繖閲屾槸涓嶇敤澶勭悊鐨�
-//                if (isBackGround) {
-//                    return;
-//                }
-//                [_es onStopCapture];
-//                [_es stopTalk];
-//            }
-//            //澶氫釜搴旂敤绋嬪簭璧勬簮浜夌敤璐ㄩ噺涓嬮檷銆傚彧鏈夊綋搴旂敤绋嬪簭鍗犳嵁鍏ㄥ睆鏃讹紝浼氳瘽鎵嶈兘杩愯銆�
-//            else if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps) {
-//                NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableWithMultipleForegroundApps");
-//                // Fade-in a label to inform the user that the camera is unavailable.
-//            }else if (@available(iOS 11.1, *)) {
-//                if (reason == AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure){
-//                    NSLog(@"AVCaptureSessionInterruptionReasonVideoDeviceNotAvailableDueToSystemPressure");
-//                }
-//            } else {
-//                // Fallback on earlier versions
-//            }
-//        } else {
-//            if (isBackGround) {
-//                return;
-//            }
-//            [_es onStopCapture];
-//            [_es stopTalk];
-//        }
-//    }
-//}
-//
-////杩欎釜閫氱煡鍙兘浼氳幏鍙栦笉鍒帮紝
-//- (void) sessionInterruptionEnded:(NSNotification*)notification
-//{
-//    //    NSInteger reason = [notification.userInfo[AVCaptureSessionInterruptionReasonKey] integerValue];
-//    NSLog(@"Capture session interruption ended");
-//    if (self.isInterrupt == NO) {
-//        return;
-//    }else{
-//        //鐩存帴鍦ㄨ繘鍏ュ墠鍙伴偅涓�氱煡閲岄潰瀹炵幇锛屽疄闄呬笂杩涘叆鍓嶅彴鐨勬柟娉曚細鍦ㄨ繖涓柟娉曞墠闈㈣皟鐢紝鏁堟灉鏇村ソ
-//        [self InterruptionEndedAVAudioSessionSetActiveYES];
-//    }
-//
-//}
-//
-//-(void)InterruptionEndedAVAudioSessionSetActiveYES{
-//    if (isBackGround) {
-//        return;
-//    }
-//    if (self.isInterrupt == YES) {
-//        [_es onStartCapture];
-//        [_es startTalk];
-//        self.isInterrupt = NO;
-//    }
-//}
-//
-
-- (void)speaker:(UIButton *)sender {
-    //    [_es stopTalk];
-    //
-    //    NSString *result = nil;
-    //    //    //鍚瓛鐘舵�� 鎻掕�冲鍚庢嫈鎺夊悗鎭㈠鍒伴粯璁よ缃�
-    //    //    if (sender == nil) {
-    //    //        result = [_sessionHelper speaker:NO];
-    //    //    }else{
-    //    //        if(!_isSpeaking){
-    //    //            result = [_sessionHelper speaker:YES];
-    //    //            _isSpeaking = YES;
-    //    //        }else{
-    //    //            result = [_sessionHelper speaker:NO];
-    //    //            _isSpeaking = NO;
-    //    //        }
-    //    //    }
-    //    //    if (result) {
-    //    //        [sender setTitle:result forState:UIControlStateNormal];
-    //    //        [_es startTalk];
-    //    //    }
-    //
-    //    if(!_isSpeaking){
-    ////        result = [_sessionHelper speaker:YES];
-    //        [_es resetAudioCaptureIsSpeak:YES];
-    //        _isSpeaking = YES;
-    //    }else{
-    ////        result = [_sessionHelper speaker:NO];
-    //        [_es resetAudioCaptureIsSpeak:NO];
-    //        _isSpeaking = NO;
-    //    }
-    //    if (result) {
-    //        //          [sender setTitle:result forState:UIControlStateNormal];
-    //        [_es startTalk];
-    //    }
-}
-
-//- (void)audioRouteChangeListenerCallback:(NSNotification*)notification
-//{
-//
-//    NSDictionary *interuptionDict = notification.userInfo;
-//    NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
-//    switch (routeChangeReason) {
-//        case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
-//            //NSLog(@"AVAudioSessionRouteChangeReasonNewDeviceAvailable");
-//            //鍏嶆彁鐘舵�佷笅鑰虫満鎻掑叆娌℃湁閲囬泦锛屽悓鎰忓垏鎹㈠埌榛樿鐘舵��
-//            NSLog(@"鑰虫満鎻掑叆");
-//            [self speaker:nil];
-//            break;
-//        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
-//            //NSLog(@"AVAudioSessionRouteChangeReasonOldDeviceUnavailable");
-//            NSLog(@"鑰虫満鎷斿嚭");
-//            [self speaker:nil];
-//
-//            break;
-//        case AVAudioSessionRouteChangeReasonCategoryChange:
-//            // called at start - also when other audio wants to play
-//            //NSLog(@"AVAudioSessionRouteChangeReasonCategoryChange");
-//            break;
-//    }
-//}
-
-/*
- 闇�瑕佹敞鎰忕殑鏄紝鏈変竴涓腑鏂紑濮嬫秷鎭笉涓�瀹氫細鏈変竴涓腑鏂粨鏉熸秷鎭紝杩欏氨鎰忓懗鐫�涓柇缁撴潫鐨勫洖璋冮噷鐨勫鐞嗛�昏緫鍙兘浼氭病鏈夎鎵ц鍒般��
- 鎵�浠ラ渶瑕佸叧娉ㄥ綋鍒囧埌鍓嶅彴杩愯鐘舵�佹椂锛屾槸涓嶆槸闇�瑕侀噸鏂版縺娲讳綘鐨� Audio Session銆�
- */
-- (void)willEnterForeground:(NSNotification*)notification{
-    NSLog(@"willEnterForeground");
-    //    //鍒濇鍚姩浼氳蛋杩欎釜閫氱煡(鏍归〉闈�)锛岃繖鏃跺�欐槸娌℃湁杩涘叆鍚庡彴鐨�
-    //    if (isBackGround) {
-    //        return;
-    //    }
-    //
-    //    [self InterruptionEndedAVAudioSessionSetActiveYES];
-    //
-    //    // 杩欓噷鏄�冭檻鍒扮敤鎴锋病鏈夋巿鏉冿紝涔嬪悗閫氳繃AlertAction璺宠浆鍒拌缃〉闈㈡巿鏉冨悗鍐嶅洖鍒癆PP鏃跺仛鐨勯噸鏂版娴�
-    //    //璺宠浆鍒拌缃〉闈紝鎺堟潈鍚庤繑鍥為〉闈紝缁х画鍒濆鍖栭噰闆嗗櫒
-    //    if(!isAccessAudio){
-    //        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    //        if (isAccessAudio) {
-    //            [_es initAudioCaptureSession];
-    //        }
-    //    }
-    //
-    //    if (isAccessAudio && isAccessVideo) {
-    //        return;
-    //    }
-    //    if (isAccessVideo && !isAccessAudio) {
-    //        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    //        if (isAccessAudio) {
-    //            [_es initAudioCaptureSession];
-    //        }
-    //    }else if (!isAccessVideo && isAccessAudio){
-    ////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-    ////        if (isAccessVideo) {
-    ////            [_es initVideoCaptureSession];
-    ////        }
-    //
-    //    }else if (!isAccessVideo && !isAccessAudio){
-    //        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-    ////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-    //        if (isAccessAudio) {
-    //            [_es initAudioCaptureSession];
-    //        }
-    ////        if (isAccessVideo) {
-    ////            [_es initVideoCaptureSession];
-    ////        }
-    //    }
-}
-- (void)willEnterBackground:(NSNotification *)notification {
-    isBackGround = YES;
-}
-
-////鎺堟潈Alert
-//-(void)requestAccessForAVMedia{
-//    if (!isAccessAudio) {
-//        [self requestAccessForAVMediaType:AVMediaTypeAudio];
-//    }
-//    //    if (!isAccessVideo) {
-//    ////        [self requestAccessForAVMediaType:AVMediaTypeVideo];
-//    //    }
-//    if (!iSAudioNotDetermined && iSVideoNotDetermined){
-//        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庢病鏈夋巿鏉�,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-//    }else if(iSAudioNotDetermined && !iSVideoNotDetermined){
-//        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"鐩告満娌℃湁鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-//    }else if(!iSAudioNotDetermined && !iSVideoNotDetermined){
-//        [self creatAlertViewWith:@"鎺堟潈璇锋眰" message:@"楹﹀厠椋庝笌鐩告満鎺堟潈,璇峰湪璁剧疆涓紑鍚潈闄�,鍚﹀垯灏嗗奖鍝嶉�氳鍔熻兘銆�" cancel:@"纭畾"];
-//    }
-//}
-//
-//-(void)requestAccessForAVMediaType:(AVMediaType)type{
-//    if (type == AVMediaTypeVideo) {
-//        isAccessVideo = YES;
-//        iSVideoNotDetermined = YES;
-//    }else{
-//        isAccessAudio = YES;
-//        iSAudioNotDetermined = YES;
-//    }
-//    switch ([AVCaptureDevice authorizationStatusForMediaType:type])
-//    {
-//        case AVAuthorizationStatusAuthorized:
-//        {
-//            break;
-//        }
-//        case AVAuthorizationStatusNotDetermined:
-//        {
-//            dispatch_suspend(dispatch_get_main_queue());
-//            [AVCaptureDevice requestAccessForMediaType:type completionHandler:^(BOOL granted) {
-//                if (!granted) {
-//                    if (type == AVMediaTypeVideo) {
-//                        self->isAccessVideo = NO;
-//                    }else{
-//                        self->isAccessAudio = NO;
-//                    }
-//                }
-//                dispatch_resume(dispatch_get_main_queue());
-//            }];
-//            break;
-//        }
-//        default:
-//        {
-//            if (type == AVMediaTypeVideo) {
-//                isAccessVideo = NO;
-//                iSVideoNotDetermined = NO;
-//            }else{
-//                isAccessAudio = NO;
-//                iSAudioNotDetermined = NO;
-//            }
-//            break;
-//        }
-//    }
-//}
-//
-//-(void)creatAlertViewWith:(NSString *)title message:(NSString *) msg cancel:(NSString *)cancelMsg{
-//    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
-//    [alertController addAction:[UIAlertAction actionWithTitle:cancelMsg style:UIAlertActionStyleCancel handler:nil]];
-//    [alertController addAction:[UIAlertAction actionWithTitle:@"璁剧疆" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-//        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
-//    }]];
-//    [self presentViewController:alertController animated:YES completion:nil];
-//}
-
-
-
-#pragma 淇濆瓨鍥剧墖鍒扮浉鍐�
-- (void)saveImageToPhotosAlbum:(UIImage *)savedImage
-{
-    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
-    if (status == PHAuthorizationStatusNotDetermined)
-    {
-        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
-            if(status == PHAuthorizationStatusAuthorized)
-            {
-                UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-            }
-        }];
-    }
-    else
-    {
-        if (status == PHAuthorizationStatusAuthorized)
-        {
-            UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), NULL);
-        }
-    }
-}
-
-// 鎸囧畾鍥炶皟鏂规硶
-- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
-{
-    NSString *message = nil;
-    if (!error) {
-        message = saveToTheAlbumsStr;
-    }
-    else
-    {
-        message = operationFailedStr;
-    }
-    
-    [self showUIAlertView:message];
-}
-
-/**
- 
- */
-- (void)saveThumbImage {
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
-                                                         NSUserDomainMask, YES);
-    NSString *libraryDirectory = [paths objectAtIndex:0];
-    
-    NSString *myDirectory =
-    [libraryDirectory stringByAppendingPathComponent:@"ON+"];
-    NSString *picDirectory =
-    [myDirectory stringByAppendingPathComponent:@"picture"];
-    
-    NSDateFormatter *dataFormat = [[NSDateFormatter alloc] init];
-    [dataFormat setDateFormat:@"yyyyMMddHHmmss"];
-    NSString *strDate = [dataFormat stringFromDate:[NSDate date]];
-    NSString *datePath = [picDirectory stringByAppendingPathComponent:strDate];
-    NSString *picPath = [datePath stringByAppendingString:@".jpg"];
-    NSLog(@"test jpg name[%@]\n", picPath);
-    
-    NSFileManager *fileManage = [NSFileManager defaultManager];
-    NSError *pErr;
-    BOOL isDir;
-    if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
-        [fileManage createDirectoryAtPath:myDirectory
-              withIntermediateDirectories:YES
-                               attributes:nil
-                                    error:&pErr];
-    }
-    if (NO == [fileManage fileExistsAtPath:picDirectory isDirectory:&isDir]) {
-        [fileManage createDirectoryAtPath:picDirectory
-              withIntermediateDirectories:YES
-                               attributes:nil
-                                    error:&pErr];
-    }
-    [self.playWindow snapShot:picPath];
-    UIImage *image = [UIImage imageWithContentsOfFile:picPath];
-    [self saveImageToPhotosAlbum:image];
-    
-}
-
-
-@end
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/ESVideoPhoneSDk b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/ESVideoPhoneSDk
deleted file mode 100644
index d1587ef..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/ESVideoPhoneSDk
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESError.h b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESError.h
deleted file mode 100644
index 0d5fe9d..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESError.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-//  ESError.h
-//  ESVideoPhoneSDk
-//
-//  Created by eTouchSky on 2019/12/14.
-//  Copyright 漏 2019 eTouchSky. All rights reserved.
-//
-//  ESVideoPhone鐨凟SVideoPhoneDelegate鏂规硶鈥�- (void)getAErrorForESVideoPhone:(NSString *)errorStr type:(NSUInteger) errortype鈥� 涓璭rrortype鐨勭被鍨�
-
-
-#import <Foundation/Foundation.h>
-//瑙嗛閲囬泦锛屼細瀵艰嚧闂ㄥ彛鏈虹湅涓嶅埌App鐨勮棰戯紙鐩戞帶鐘舵�佹椂锛岄棬鍙f満鏄湅涓嶅埌App鐨勮棰戠殑锛�
-//App闇�瑕佸鐞� LMPVideoCaptureErrorGetDevice涓嶭MPVideoCaptureErrorNotAuthorized 绫诲瀷鐨勯敊璇�
-typedef NS_ENUM (NSUInteger, LMPVideoCaptureError){
-    LMPVideoCaptureErrorGetDevice                      = 0,//鑾峰彇鎽勫儚澶村け璐�
-    LMPVideoCaptureErrorGetInput                       = 1,//鑾峰彇瑙嗛杈撳叆閿欒,浠巈rror涓幏鍙栧叿浣撲俊鎭�
-    LMPVideoCaptureErrorAddInput                       = 2,//AddInputVideo閿欒
-    LMPVideoCaptureErrorAddOutput                      = 3,//AddOutputVideo閿欒
-    LMPVideoCaptureErrorNotAuthorized                  = 4,//娌℃湁鎺堟潈锛屾巿鏉冨鐞嗙敱App瀹炵幇
-    LMPVideoCaptureErrorSetSessionPreset               = 5,//SetSessionPreset澶辫触
-};
-//openGl瑙嗛娓叉煋锛屼細瀵艰嚧闂ㄥ彛鏈虹湅涓嶅埌App鐨勮棰戯紙鐩戞帶鐘舵�佹椂锛岄棬鍙f満鏄湅涓嶅埌App鐨勮棰戠殑锛�
-typedef NS_ENUM (NSUInteger, LMPOpenglError){
-    LMPOpenglErrorSetCurrentContext                      = 0,//EAGLContext涓婁笅鏂囧垱寤哄け璐�
-    LMPOpenglErrorRenderbuffer                           = 1,//OpenGL attach娓叉煋缂撳啿鍖哄け璐�
-    LMPOpenglErrorGenTextures                            = 2,//OpenGL 绾圭悊鍒涘缓澶辫触
-    LMPOpenglErrorShaderConnection                       = 3,//OpenGL 鐫�鑹插櫒杩炴帴澶辫触
-    LMPOpenglErrorLoadShader                             = 4,//OpenGL 鍔犺浇鐫�鑹插櫒澶辫触
-    LMPOpenglErrorShaderCompilation                      = 5,//OpenGL 鐫�鑹插櫒缂栬瘧澶辫触
-};
-/**瑙嗛瑙g爜锛屼細瀵艰嚧App鐪嬩笉鍒伴棬鍙f満鐨勮棰�
-debug妯″紡涓嬶紝鏂偣鍙兘瀵艰嚧鍑虹幇LMPH264HwDecoderErrorKVTInvalidSessionErr鐨勯敊璇�
-鍓嶅彴鍚庡垏鎹紝鏉ョ數绛夊師鍥犵殑涓柇鍙兘浼氬嚭鐜癓MPH264HwDecoderErrorKVTInvalidSessionErr鐨勯敊璇紙宸茬粡淇锛屾敞鎰忔祴璇曡繃绋嬩腑鏄惁杩樹細鍑虹幇锛�
-*/
-typedef NS_ENUM (NSUInteger, LMPH264HwDecoderError){
-    LMPH264HwDecoderErrorInitH264HardwareDecoder                     = 0,//InitH264HardwareDecoderErr
-    LMPH264HwDecoderErrorKVTVideoDecoderMalfunction                  = 1,//kVTVideoDecoderMalfunctionErr
-    LMPH264HwDecoderErrorKVTInvalidSessionErr                        = 2,//kVTInvalidSessionErr
-    LMPH264HwDecoderErrorKVTVideoDecoderBadDataErr                   = 3,//kVTVideoDecoderBadDataErr
-    LMPH264HwDecoderErrorDecodeOtherErr                              = 4,//纭В鐮佸叾浠栭敊璇�
-    LMPH264HwDecoderErrorCVPixelBufferRefPlantErr                    = 5,//CVPixelBufferRef涓暟鎹负绌�
-    LMPH264HwDecoderErrorCVPixelBufferRefYUVErr                      = 6,//CVPixelBufferRef涓彇鍑篩UV澶辫触
-};
-//瑙嗛缂栫爜锛屼細瀵艰嚧闂ㄥ彛鏈虹湅涓嶅埌App鐨勮棰戯紙鐩戞帶鐘舵�佹椂锛岄棬鍙f満鏄湅涓嶅埌App鐨勮棰戠殑锛�
-typedef NS_ENUM (NSUInteger, LMPH264EncoderError){
-    LMPH264EncoderErrorVTCompressionSessionCreate                    = 0,//VTCompressionSessionCreateErr
-    LMPH264EncoderErrorVideoCompressonOutputCallback                 = 1,//缂栫爜鍥炶皟澶辫触
-};
-//闊抽閲囬泦锛屼細瀵艰嚧涓嶈兘閲囬泦闊抽锛屽鏂瑰惉涓嶅埌App鐨勫0闊筹紙鐩戞帶鐘舵�佹椂锛岄棬鍙f満鏄惉涓嶅埌App鐨勫0闊崇殑锛�
-typedef NS_ENUM (NSUInteger, LMPAudioCaptureError){
-    LMPAudioCaptureErrorGetNew                         = 0,//AudioComponentInstanceNew澶辫触
-    LMPAudioCaptureErrorStreamFormat                   = 1,//kAudioUnitProperty_StreamFormat澶辫触
-    LMPAudioCaptureErrorEnableRecord                   = 2,//鎵撳紑褰曢煶澶辫触
-    LMPAudioCaptureErrorEnablePlay                     = 3,//鍏抽棴鎾斁澶辫触
-    LMPAudioCaptureErrorSetInputCallback               = 4,//AudioUnitSetCallback澶辫触
-    LMPAudioCaptureErrorShouldAllocateBuffer           = 5,//浣跨敤鑷繁鐨勭紦瀛樺け璐�
-    LMPAudioCaptureErrorBypassVoiceProcessing          = 6,//鎵撳紑鍥炲0娑堥櫎鍔熻兘澶辫触
-    LMPAudioCaptureErrorAudioUnitInitialize          = 7,//AudioUnitInitialize澶辫触
-};
-//闊抽鎾斁锛屼細瀵艰嚧涓嶈兘鎾斁闊抽锛屽惉涓嶅埌瀵规柟鐨勫0闊�
-typedef NS_ENUM (NSUInteger, LMPAudioPlayError){
-    LMPAudioPlayErrorGetNew                         = 0,//AudioPlay_AudioComponentInstanceNew澶辫触
-    LMPAudioPlayErrorStreamFormat                   = 1,//AudioPlay_kAudioUnitProperty_StreamFormat澶辫触
-    LMPAudioPlayErrorEnableRecord                   = 2,//AudioPlay_鍏抽棴褰曢煶澶辫触
-    LMPAudioPlayErrorEnablePlay                     = 3,//AudioPlay_鎵撳紑鎾斁澶辫触
-    LMPAudioPlayErrorSetRenderCallback              = 4,//AudioPlay_AudioUnitSetRenderCallback澶辫触
-    LMPAudioPlayErrorShouldAllocateBuffer           = 5,//浣跨敤鑷繁鐨勭紦瀛樺け璐�
-    LMPAudioPlayErrorBypassVoiceProcessing          = 6,//AudioPlay_鎵撳紑鍥炲0娑堥櫎鍔熻兘澶辫触
-    LMPAudioPlayErrorAudioUnitInitialize            = 7,//AudioPlay_AudioUnitInitialize澶辫触
-};
-//闊抽閲嶉噰鏍凤紝浼氬鑷翠笉鑳藉彂閫佹挱鏀鹃煶棰戙��
-typedef NS_ENUM (NSUInteger, LMPAudioConverterError){
-    LMPAudioConverterErrorGetNew                   = 0,//GetNew澶辫触
-    LMPAudioConverterErrorRecord                   = 1,//Record澶辫触
-};
-
-@interface ESError : NSObject
-
-@end
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h
deleted file mode 100644
index d3ed23c..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h
+++ /dev/null
@@ -1,92 +0,0 @@
-
-//  ESVideoPhone.h
-//  VideoPhone
-//
-//  Created by maygion on 2019/3/26.
-//  Copyright 漏 2019 eTouchSky. All rights reserved.
-//  SDK鐗堟湰鍙凤細1.0.0  娴嬭瘯鐗�1
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-typedef void (^ImageCallback)(UIImage *image);
-
-@protocol ESVideoPhoneDelegate <NSObject>
-- (void)getAErrorForESVideoPhone:(NSString *)errorStr type:(NSUInteger) errortype;
-- (void)getPhoneEvent_UI:(NSString*)phoneEvent;
-@end
-
-@interface ESVideoPhone : NSObject
-
-//閿欒淇℃伅
-@property(nonatomic,weak) id<ESVideoPhoneDelegate> delegate;
-////鑾峰彇瑙嗛鎴浘鐨刡lock
-//@property(nonatomic,copy) ImageCallback snapImageCallback;
-//瑙嗛鏄剧ず鐨刅iew 鈿狅笍璇峰仛闈炵┖鍒ゆ柇
-@property(nonatomic,strong,readonly) UIView* showView;
-//涓柇璁剧疆
-@property (nonatomic,assign,readwrite) BOOL isInterrupt;
-/**
-* ESVideoPhone 鍒濆鍖栨柟娉�
-* 鍒濆鍖朠2P锛孫penGL锛孉udioUnit鎾斁銆�
-* @param frame 鐢熸垚鏄剧ず瑙嗛鐨凜GRect
-* @param delegate ESVideoPhoneDelegate浠g悊
-* @paramimagecallBack 鑾峰彇瑙嗛鎴浘鐨刡lock
-*
-*  @return ESVideoPhone 瀹炰緥,杩斿洖nil琛ㄧずP2P鍒濆鍖栧け璐ャ��
-*/
-- (instancetype)initESVideoPhoneWithFrame:(CGRect)frame delegate: (id<ESVideoPhoneDelegate>)del imagecallBack:(ImageCallback)callBack;
-//鎺堟潈鍚庢墦寮�闊抽閲囬泦锛岃棰戞病鏈夋潈闄愪篃鍙互鍙煶棰戦�氳瘽
--(BOOL)initAudioCaptureSession;
-//鈿狅笍鎺堟潈鍚庢墦寮�瑙嗛閲囬泦锛岄煶棰戞病鏈夋潈闄愬缓璁笉瑕佸彂璧烽�氳瘽
--(BOOL)initVideoCaptureSession;
-/**
-* 鍛煎彨
-*
-* @param deviceId 闂ㄥ彛鏈鸿澶嘔D锛岃繖涓弬鏁颁細浠庡悗鍙版媺鍙栵紙涓�鑸槸涓暟缁勫叾涓寘鍚鐢ㄦ埛鏉冮檺鎷ユ湁鐨勬墍鏈夐棬鍙f満锛�
-*/
-- (void)onCall:(NSString *)deviceId;
-/**
-* 鐩戞帶
-*
-* @param deviceId 闂ㄥ彛鏈鸿澶嘔D锛岃繖涓弬鏁颁細浠庡悗鍙版媺鍙栵紙涓�鑸槸涓暟缁勫叾涓寘鍚鐢ㄦ埛鏉冮檺鎷ユ湁鐨勬墍鏈夐棬鍙f満锛�
-*/
-- (void)onMonitor:(NSString *)deviceId;
-/**
-* 鎺ュ惉
-* 杩欎釜鏂规硶浼氬湪AppDelegate鐨勯�氱煡鎺ュ彛涓皟鐢紝閲囩敤灏忕背鎺ㄩ��
-* @param deviceId 闂ㄥ彛鏈鸿澶嘔D锛岃繖涓弬鏁颁細浠庨�氱煡涓幏鍙栫敱璁惧ID涓庡崟娆¢�氳瘽tag鎷兼垚锛堝彲鑳戒細鏈夊彉鍔級
-*/
-- (void)onReverseCall:(NSString *)deviceId;
-//鎺ュ惉
-- (void)onAccept;
-//鎸傛柇
-- (void)onHangup;
-//鎵撳紑闊抽閲囬泦涓庨煶棰戞挱鏀�
--(void)startTalk;
-//鍏抽棴闊抽閲囬泦涓庨煶棰戞挱鏀�
-- (void)stopTalk;
-//鑾峰彇瑙嗛鎴浘
-- (void)onSnap;
-//鎵撳紑瑙嗛閲囬泦
-- (void)onStartCapture;
-//鍏抽棴瑙嗛閲囬泦
-- (void)onStopCapture;
-/**
-* 寮�闂紝缁撴灉鍦‥SVideoPhoneDelegate 鏂规硶涓繑鍥�
-*
-* @param roomId 浣忔埛鐨剅oomid锛�
-*/
--(void)openTheDoorWithRoomid: (int)roomId;
-//閲婃斁璧勬簮锛坉elegate閲婃斁绛夛級
--(void)freeSubClass;
-
-//鍏嶆彁鎾斁 鍚瓛鎾斁 浜掔浉鍒囨崲  buffer閲嶅埗涓�0锛屽惁鍒欐湁浜涚郴缁燂紝鍦ㄥ惉绛掓ā寮忎笅涓嶈兘閲囬泦 error-50
--(BOOL)resetAudioCaptureIsSpeak:(BOOL)isSpeak;
-
-@end
-
-
-
-
-
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Info.plist b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Info.plist
deleted file mode 100644
index 396d13b..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory
deleted file mode 100644
index ba66cf3..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements
deleted file mode 100644
index fdb3ae6..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1 b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1
deleted file mode 100644
index 84caed2..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources
deleted file mode 100644
index f977b4c..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>files</key>
-	<dict>
-		<key>Headers/ESError.h</key>
-		<data>
-		pvjBtkhm2U/Y83vkOrTjVeFC1rc=
-		</data>
-		<key>Headers/ESVideoPhone.h</key>
-		<data>
-		kGvbOvS6cBnVsmUHmyi2E6VgP+8=
-		</data>
-		<key>Info.plist</key>
-		<data>
-		Zp/dsh9RYNjl/knrzPgFdMIaTIU=
-		</data>
-	</dict>
-	<key>files2</key>
-	<dict>
-		<key>Headers/ESError.h</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			pvjBtkhm2U/Y83vkOrTjVeFC1rc=
-			</data>
-			<key>hash2</key>
-			<data>
-			18Khpfz8wF7kpRYfu0Hu9nXX8ojPhCddZq9AC5/W4P0=
-			</data>
-		</dict>
-		<key>Headers/ESVideoPhone.h</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			kGvbOvS6cBnVsmUHmyi2E6VgP+8=
-			</data>
-			<key>hash2</key>
-			<data>
-			0nI6AIHD+V13SkVwTcbXE/eDC2SJLVTIcX2hiIoRtJg=
-			</data>
-		</dict>
-	</dict>
-	<key>rules</key>
-	<dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^version.plist$</key>
-		<true/>
-	</dict>
-	<key>rules2</key>
-	<dict>
-		<key>.*\.dSYM($|/)</key>
-		<dict>
-			<key>weight</key>
-			<real>11</real>
-		</dict>
-		<key>^(.*/)?\.DS_Store$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>2000</real>
-		</dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^Info\.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^PkgInfo$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^embedded\.provisionprofile$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^version\.plist$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-	</dict>
-</dict>
-</plist>
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature b/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature
deleted file mode 100644
index f2b78a0..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Modules/module.modulemap b/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Modules/module.modulemap
deleted file mode 100644
index 9a89702..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Modules/module.modulemap
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module LCOpenSDKDynamic [extern_c] {
-	umbrella header "LCOpenSDKDynamic.h"
-	export *
-	module * { export * }
-
-}
diff --git a/iOS/Xamarin/ESVideoOnXamarin/README.md b/iOS/Xamarin/ESVideoOnXamarin/README.md
deleted file mode 100644
index d1dc2c9..0000000
--- a/iOS/Xamarin/ESVideoOnXamarin/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## 涓版灄鍙瀵硅
-
-### *****V1.0.1*****
-### 1.ON+鐗堟湰涓版灄鍙瀵硅銆�
-
-
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj b/iOS/Xamarin/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj
index 750b494..c943d18 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		B92E6AC5264B710800D63F4B /* LCCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B92E6AC4264B710800D63F4B /* LCCallDelegate.m */; };
 		B9DA498F263662B100C7BD1C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA498E263662B100C7BD1C /* AppDelegate.m */; };
 		B9DA4992263662B100C7BD1C /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA4991263662B100C7BD1C /* SceneDelegate.m */; };
 		B9DA4995263662B100C7BD1C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA4994263662B100C7BD1C /* ViewController.m */; };
@@ -29,7 +30,6 @@
 		B9DA49C72636655100C7BD1C /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C62636655100C7BD1C /* CoreMedia.framework */; };
 		B9DA49C92636657100C7BD1C /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DA49C82636657100C7BD1C /* libz.tbd */; };
 		B9DA49CC2636658D00C7BD1C /* LCOpenSDKDynamic.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B9DA49B4263664E400C7BD1C /* LCOpenSDKDynamic.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		B9DA49CF26366A2500C7BD1C /* ESCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DA49CD26366A2500C7BD1C /* ESCallDelegate.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
@@ -46,6 +46,9 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		B92E6AC3264B710800D63F4B /* LCCallDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCCallDelegate.h; sourceTree = "<group>"; };
+		B92E6AC4264B710800D63F4B /* LCCallDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LCCallDelegate.m; sourceTree = "<group>"; };
+		B92E6ACD264BA81D00D63F4B /* LCUtlis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCUtlis.h; sourceTree = "<group>"; };
 		B9DA498A263662B100C7BD1C /* LCOnDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LCOnDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B9DA498D263662B100C7BD1C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		B9DA498E263662B100C7BD1C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -63,7 +66,6 @@
 		B9DA49AA2636631E00C7BD1C /* LCOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnIntercomViewController.h; sourceTree = "<group>"; };
 		B9DA49AB2636631E00C7BD1C /* LCOnMonitorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnMonitorViewController.m; sourceTree = "<group>"; };
 		B9DA49AC2636631E00C7BD1C /* LCApiKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCApiKit.m; sourceTree = "<group>"; };
-		B9DA49AD2636631E00C7BD1C /* LCKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCKit.h; sourceTree = "<group>"; };
 		B9DA49AE2636631E00C7BD1C /* LCOnIntercomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnIntercomViewController.m; sourceTree = "<group>"; };
 		B9DA49B4263664E400C7BD1C /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LCOpenSDKDynamic.framework; path = Depend/LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
 		B9DA49B6263664FA00C7BD1C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
@@ -76,8 +78,6 @@
 		B9DA49C42636654A00C7BD1C /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
 		B9DA49C62636655100C7BD1C /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
 		B9DA49C82636657100C7BD1C /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
-		B9DA49CD26366A2500C7BD1C /* ESCallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESCallDelegate.m; sourceTree = "<group>"; };
-		B9DA49CE26366A2500C7BD1C /* ESCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESCallDelegate.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -141,15 +141,15 @@
 		B9DA49A72636631E00C7BD1C /* LCSDK */ = {
 			isa = PBXGroup;
 			children = (
-				B9DA49CE26366A2500C7BD1C /* ESCallDelegate.h */,
-				B9DA49CD26366A2500C7BD1C /* ESCallDelegate.m */,
+				B92E6AC3264B710800D63F4B /* LCCallDelegate.h */,
+				B92E6AC4264B710800D63F4B /* LCCallDelegate.m */,
 				B9DA49A82636631E00C7BD1C /* LCOnMonitorViewController.h */,
 				B9DA49AB2636631E00C7BD1C /* LCOnMonitorViewController.m */,
 				B9DA49AA2636631E00C7BD1C /* LCOnIntercomViewController.h */,
 				B9DA49AE2636631E00C7BD1C /* LCOnIntercomViewController.m */,
 				B9DA49A92636631E00C7BD1C /* LCApiKit.h */,
 				B9DA49AC2636631E00C7BD1C /* LCApiKit.m */,
-				B9DA49AD2636631E00C7BD1C /* LCKit.h */,
+				B92E6ACD264BA81D00D63F4B /* LCUtlis.h */,
 			);
 			path = LCSDK;
 			sourceTree = "<group>";
@@ -244,10 +244,10 @@
 			files = (
 				B9DA4995263662B100C7BD1C /* ViewController.m in Sources */,
 				B9DA498F263662B100C7BD1C /* AppDelegate.m in Sources */,
-				B9DA49CF26366A2500C7BD1C /* ESCallDelegate.m in Sources */,
 				B9DA49AF2636631E00C7BD1C /* LCOnMonitorViewController.m in Sources */,
 				B9DA49A0263662B300C7BD1C /* main.m in Sources */,
 				B9DA49B12636631E00C7BD1C /* LCOnIntercomViewController.m in Sources */,
+				B92E6AC5264B710800D63F4B /* LCCallDelegate.m in Sources */,
 				B9DA49B02636631E00C7BD1C /* LCApiKit.m in Sources */,
 				B9DA4992263662B100C7BD1C /* SceneDelegate.m in Sources */,
 			);
@@ -326,7 +326,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 14.2;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
 				MTL_FAST_MATH = YES;
 				ONLY_ACTIVE_ARCH = YES;
@@ -379,7 +379,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 14.2;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				MTL_FAST_MATH = YES;
 				SDKROOT = iphoneos;
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.h
deleted file mode 100644
index 0e8e50e..0000000
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-//  ESCallDelegate.h
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol ESCallDelegate <NSObject>
-
-//鎺ュ惉鍥炶皟
--(void)onAnswerAction;
-
-//鎷掓帴鏉ョ數鍥炶皟
--(void)onRejectCallAction;
-
-//寮�濮嬫垚鍔熷洖璋�
--(void)onUnlockAction;
-
-//鎸傛柇锛堥�氳瘽缁撴潫锛�
--(void)onHangUpAction:(int)callDuration;
-
-//閫氳瘽瑙嗛鎴浘涓婁紶
--(void)onScreenshotSuccessfulAction:(UIImage *)image;
-
-@end
-
-@interface ESCallDelegate : NSObject
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.m
deleted file mode 100644
index aba4e7d..0000000
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/ESCallDelegate.m
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-//  ESCallDelegate.m
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import "ESCallDelegate.h"
-
-@implementation ESCallDelegate
-
-@end
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.h
index 3278bb4..6bda54d 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.h
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.h
@@ -6,9 +6,10 @@
 //
 
 #import <Foundation/Foundation.h>
-#import "LCKit.h"
+
 
 NS_ASSUME_NONNULL_BEGIN
+
 
 @interface LCApiKit : NSObject
 /**
@@ -42,6 +43,21 @@
 - (void)initSDKOpenApi:(NSString *)lcToken;
 ///// 鎷兼帴閿欒淇℃伅
 //- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code;
+
+/// 鎺ュ彛
+
+///**
+// *  @since
+// *  寮�閿佹帴鍙�
+// *
+// *  @param deviceId 璁惧搴忓垪鍙�
+// *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+// *
+// */
+//- (void)openDoorbell:(NSString *)deviceId completion:(void (^)(ResponseData *responseData))completion;
+
+
+
 @end
 
 
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.m
index 47eedaa..1241922 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.m
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCApiKit.m
@@ -6,6 +6,7 @@
 //
 
 #import "LCApiKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 #define DEFAULTHOSTAPICHN @"https://openapi.lechange.cn:443" //涓浗澶ч檰(姝e紡)
 #define DEFAULTHOSTAPIOVS @"https://openapi.easy4ip.com:443" //娴峰锛堟寮忥級
@@ -77,9 +78,9 @@
     NSLog(@"initSDKOpenApi: %@,@%ld", [self LCSDKHost], [self LCSDKPort]);
 }
 
-/// 鎷兼帴閿欒淇℃伅
-- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code
-{
-    return [NSString stringWithFormat:@"%@(%d)",message, code];
-}
+///// 鎷兼帴閿欒淇℃伅
+//- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code
+//{
+//    return [NSString stringWithFormat:@"%@(%d)",message, code];
+//}
 @end
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.h
similarity index 62%
copy from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
copy to iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.h
index 0e8e50e..dfb8dc1 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.h
@@ -1,9 +1,8 @@
 //
-//  ESCallDelegate.h
-//  ESVideoPhoneSDKDemo
+//  LCCallDelegate.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
 #import <Foundation/Foundation.h>
@@ -11,7 +10,10 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@protocol ESCallDelegate <NSObject>
+//寮�閿佹垚鍔熼�氱煡
+extern NSString *const LCCallDelegateOpenDoorSuccess;
+
+@protocol LCCallDelegate <NSObject>
 
 //鎺ュ惉鍥炶皟
 -(void)onAnswerAction;
@@ -19,7 +21,7 @@
 //鎷掓帴鏉ョ數鍥炶皟
 -(void)onRejectCallAction;
 
-//寮�濮嬫垚鍔熷洖璋�
+//寮�閿佸洖璋�
 -(void)onUnlockAction;
 
 //鎸傛柇锛堥�氳瘽缁撴潫锛�
@@ -30,7 +32,7 @@
 
 @end
 
-@interface ESCallDelegate : NSObject
+@interface LCCallDelegate : NSObject
 
 @end
 
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.m
new file mode 100644
index 0000000..f4041f1
--- /dev/null
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCCallDelegate.m
@@ -0,0 +1,14 @@
+//
+//  LCCallDelegate.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/5/12.
+//
+
+#import "LCCallDelegate.h"
+
+NSString *const LCCallDelegateOpenDoorSuccess = @"lcCallDelegateOpenDoorSuccess";
+
+@implementation LCCallDelegate
+
+@end
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCKit.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCKit.h
deleted file mode 100644
index 686588a..0000000
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCKit.h
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-//  Created by 闄堝槈涔� on 2021/4/25.
-//  LCOnDemo
-//
-
-#ifndef LCKit_h
-#define LCKit_h
-
-#define TP_SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
-//#define IOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
-#define IOS7  (TP_SYSTEM_VERSION >= 7.0)
-#define IOS8  (TP_SYSTEM_VERSION >= 8.0)
-#define IOS9  (TP_SYSTEM_VERSION >= 9.0)
-#define IOS10 (TP_SYSTEM_VERSION >= 10.0)
-
-//鏄惁鏄� iPhoneX_XS_11Pro璁惧
-#define IPhoneX ([UIScreen mainScreen].bounds.size.width == 375.0f && [UIScreen mainScreen].bounds.size.height == 812.0f)
-//鏄惁鏄� iPhoneXSMax_XR_11_11ProMax
-#define IPhoneXR ([UIScreen mainScreen].bounds.size.width == 414.0f && [UIScreen mainScreen].bounds.size.height == 896.0f)
-// 鏄叏闈㈠睆鎵嬫満
-#define IsFullScreen (IPhoneX || IPhoneXR)
-
-// Screen
-#define APP_SCREEN_BOUNDS   [[UIScreen mainScreen] bounds]
-#define APP_SCREEN_HEIGHT   (APP_SCREEN_BOUNDS.size.height)
-#define APP_SCREEN_WIDTH    (APP_SCREEN_BOUNDS.size.width)
-#define APP_STATUS_FRAME    [UIApplication sharedApplication].statusBarFrame
-
-#define APP_TOP_BAR_HEIGHT    (IsFullScreen ? 88 : (IOS7 ? 64 : 44))
-#define APP_STATUS_BAR_HEIGHT (IsFullScreen ? 44: (IOS7 ? 20 : 0))
-#define APP_STATUS_BAR_HEIGHT_TURE (IsFullScreen ? 44: (IOS7 ? 0 : 0))
-#define APP_TOOL_BAR_HEIGHT   49
-#define APP_TAB_BAR_HEIGHT    (IsFullScreen ? (49 + 34): 49)
-#define APP_CONTENT_WIDTH     (APP_SCREEN_BOUNDS.size.width)
-#define APP_BUTTOM_HEIGHT     (IsFullScreen ? 34: 0)
-#define APP_CONTENT_HEIGHT    (APP_SCREEN_HEIGHT - APP_TOP_BAR_HEIGHT - APP_TAB_BAR_HEIGHT)
-#define APP_VISIBLE_HEIGHT    (APP_SCREEN_HEIGHT - APP_TOP_BAR_HEIGHT -APP_BUTTOM_HEIGHT)
-#define APP_B_HEIGHT          (APP_SCREEN_HEIGHT - APP_BUTTOM_HEIGHT)
-#define APP_UIFont            @"PingFangSC-Regular"
-#define APP_UIFont_BOLD       @"PingFangSC-Semibold"
-
-
-#define DesignWidth 375
-#define DesignHeight 667
-#define GetRealWidth(W)  W / (DesignWidth * 1.0f / APP_SCREEN_WIDTH)
-#define GetRealHeight(H)  H / (DesignHeight * 1.0f / APP_SCREEN_HEIGHT)
-
-
-#define TextColor    HEXCOLORA(0x1B2D4D, 1.0)
-#define TextSelectColor    HEXCOLORA(0x4484F4, 1.0)
-/** WEAKSELF_AT */
-#define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
-#define HEXCOLORA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
-
-#import <Foundation/Foundation.h>
-
-#import "LCApiKit.h"
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h>
-#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
-
-
-
-#endif /* LCUIKit_h */
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.h
index a602b63..5876640 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.h
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.h
@@ -6,17 +6,17 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "ESCallDelegate.h"
+#import "LCCallDelegate.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface LCOnIntercomViewController : UIViewController
 
-#pragma mark ESCallDelegate
+#pragma mark LCCallDelegate
 /**
- 涓版灄浜嬩欢浠g悊
+ 浜嬩欢浠g悊
  */
-@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
 
 #pragma mark 瀵瑰鎺ュ彛鏂规硶
 
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.m
index 6ef9962..8942409 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.m
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnIntercomViewController.m
@@ -9,7 +9,9 @@
 #import <AVFoundation/AVFoundation.h>
 #import <Photos/Photos.h>
 #import <AudioToolbox/AudioToolbox.h>
-#import "LCKit.h"
+#import "LCUtlis.h"
+#import "LCApiKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 @interface LCOnIntercomViewController ()<LCOpenSDK_EventListener, LCOpenSDK_TalkerListener>
 
@@ -90,8 +92,11 @@
     //寮�濮嬪弽鍛�
     [self StartReverseCall];
     [self ShowCalltimeBtn:callingStr];
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
+//    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
+//    [self setUnlock:NO];
+    //娉ㄥ唽寮�閿佹垚鍔熺洃鍚�
+    [self addOpenSuccessAction];
+    
     // Do any additional setup after loading the view.
 }
 
@@ -282,11 +287,10 @@
 
 -(void)unlockAction{
     [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    //    //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
-    
+    //寮�閿�
+    if(self.mLCCallDelegate != NULL){
+       [self.mLCCallDelegate onUnlockAction];
+    }
 }
 
 #pragma 鎸傛柇鍜屽紑閿�
@@ -305,13 +309,13 @@
 //鎸傛柇鎸夐挳浜嬩欢
 -(void)hangUpAction{
     //1.鍥炶皟浜嬩欢
-    if(self.mESCallDelegate != NULL){
+    if(self.mLCCallDelegate != NULL){
         if(isAnswer){
             //濡傛灉涔嬪墠宸茬粡鎺ュ惉浜嗭紝鍥炶皟鏄寕鏂�
-            [self.mESCallDelegate onHangUpAction:_callTimeout];
+            [self.mLCCallDelegate onHangUpAction:_callTimeout];
         }else{
             //濡傛灉涔嬪墠娌℃帴鍚簡锛屽洖璋冩槸鎷掓帴
-            [self.mESCallDelegate onRejectCallAction];
+            [self.mLCCallDelegate onRejectCallAction];
         }
     }
     //2.椤甸潰鍏抽棴
@@ -350,7 +354,7 @@
     [self stopPlaySystemSound];
     /// 寮�鍚璁�
     [self startTalk];
-
+    
     _answerImgBtn.hidden = YES;
     _answerTextBtn.hidden = YES;
     
@@ -364,8 +368,8 @@
     [self startCountdown];
     isAnswer = YES;
     
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onAnswerAction];
+    if(self.mLCCallDelegate != NULL){
+        [self.mLCCallDelegate onAnswerAction];
     }
     
 }
@@ -503,10 +507,7 @@
     _openDoorTimeout = 0;
     [self startOpenDoorCountdown];
     [self showUIAlertView:unlockSuccessfullyStr];
-    // 寮�閿佹垚鍔熷洖璋�
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onUnlockAction];
-    }
+    
 }
 
 -(void)setUnlock:(BOOL)ISEnable{
@@ -653,7 +654,7 @@
 - (void)startTalk {
     if (!isAnswer) {
         //瀵硅寮�鍚�
-//        [self.playWindow stopAudio];
+        //        [self.playWindow stopAudio];
         
         if(self.talker == NULL) return;
         
@@ -726,13 +727,13 @@
         if (type == 0) {
             
             if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             //鎻愮ず澶辫触
@@ -764,31 +765,31 @@
     dispatch_async(dispatch_get_main_queue(), ^{
         NSLog(@"寮�鍚璁插洖璋僥rror = %@, type = %ld", error, (long)type);
         WEAKSELF_AT(self);
-//        [LCProgressHUD hideAllHuds:nil];
-//        if (99 == type) {   //缃戠粶璇锋眰澶辫触
-////            dispatch_async(dispatch_get_main_queue(), ^{
-////                weakself.videoManager.isOpenAudioTalk = NO;
-////                [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-////            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//                //瀵硅杩炴帴鎴愬姛寤虹珛
-//                self.videoManager.isOpenAudioTalk = YES;
-//                [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T];
-//            });
-//            return;
-//        }
-//        dispatch_async(dispatch_get_main_queue(), ^{
-//            [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-//            weakself.videoManager.isOpenAudioTalk = NO;
-//        });
+        //        [LCProgressHUD hideAllHuds:nil];
+        //        if (99 == type) {   //缃戠粶璇锋眰澶辫触
+        ////            dispatch_async(dispatch_get_main_queue(), ^{
+        ////                weakself.videoManager.isOpenAudioTalk = NO;
+        ////                [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
+        ////            });
+        //            return;
+        //        }
+        //        if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) {
+        //            dispatch_async(dispatch_get_main_queue(), ^{
+        //            });
+        //            return;
+        //        }
+        //        if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) {
+        //            dispatch_async(dispatch_get_main_queue(), ^{
+        //                //瀵硅杩炴帴鎴愬姛寤虹珛
+        //                self.videoManager.isOpenAudioTalk = YES;
+        //                [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T];
+        //            });
+        //            return;
+        //        }
+        //        dispatch_async(dispatch_get_main_queue(), ^{
+        //            [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
+        //            weakself.videoManager.isOpenAudioTalk = NO;
+        //        });
     });
 }
 
@@ -1025,8 +1026,8 @@
     if (!error) {
         message = saveToTheAlbumsStr;
         // 鎴浘鎴愬姛鍥炶皟
-        if(self.mESCallDelegate != NULL){
-            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
+        if(self.mLCCallDelegate != NULL){
+            [self.mLCCallDelegate onScreenshotSuccessfulAction:image];
         }
     }
     else
@@ -1079,7 +1080,7 @@
 //寮�濮嬫挱鏀剧殑鏃跺�欒皟鐢�
 -(void)startPlaySystemSound{
     
-//    return;
+    //    return;
     //    //闇囧姩鐨勬彁绀烘枃浠跺悕鏀惧埌璧勬簮鐩綍涓�
     //    NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
     //    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
@@ -1092,7 +1093,7 @@
 
 //鎵嬪姩鍋滄鎾斁鐨勬椂鍊欒皟鐢�
 - (void)stopPlaySystemSound{
-//    return;
+    //    return;
     NSLog(@"stop PlaySystemSound");
     stopRingAndVibration();
 }
@@ -1119,8 +1120,25 @@
 //}
 
 
+///
+- (void)addOpenSuccessAction {
 
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
 
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(setOpenDoorSuccess)
+                                                 name:LCCallDelegateOpenDoorSuccess
+                                               object:nil];
+}
+
+- (void)removeOpenSuccessAction {
+
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
+}
 
 @end
 
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.h
index cd7d460..11e6d4e 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.h
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.h
@@ -6,11 +6,20 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "LCCallDelegate.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface LCOnMonitorViewController : UIViewController
 
+#pragma mark LCCallDelegate
+/**
+ 浜嬩欢浠g悊
+ */
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
+
+#pragma mark 瀵瑰鎺ュ彛鏂规硶
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.m
index e0294c2..ff39a7f 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.m
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCOnMonitorViewController.m
@@ -8,9 +8,9 @@
 #import "LCOnMonitorViewController.h"
 #import <AVFoundation/AVFoundation.h>
 #import <Photos/Photos.h>
-#import "LCKit.h"
-
-
+#import "LCUtlis.h"
+#import "LCApiKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 @interface LCOnMonitorViewController ()<LCOpenSDK_EventListener>
 
@@ -76,8 +76,10 @@
     [self initESVideo];
     [self StartMonitoring];
     
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
+//    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
+//    [self setUnlock:NO];
+    //娉ㄥ唽寮�閿佹垚鍔熺洃鍚�
+    [self addOpenSuccessAction];
     // Do any additional setup after loading the view.
 }
 
@@ -277,9 +279,9 @@
     [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
     [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
     //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
+    if(self.mLCCallDelegate != NULL){
+        [self.mLCCallDelegate onUnlockAction];
+    }
 }
 
 - (UIButton *)unlockTextBtn{
@@ -479,13 +481,13 @@
         if (type == 0) {
             
             if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             //鎻愮ず澶辫触
@@ -1069,6 +1071,18 @@
     
 }
 
+- (void)addOpenSuccessAction {
+
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
+
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(setOpenDoorSuccess)
+                                                 name:LCCallDelegateOpenDoorSuccess
+                                               object:nil];
+}
+
 
 @end
 
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCUtlis.h
similarity index 91%
copy from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
copy to iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCUtlis.h
index ac50ea5..c50a61b 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/LCSDK/LCUtlis.h
@@ -1,12 +1,11 @@
 //
-//  ESOnUtlis.h
-//  ESVideoPhoneSDKDemo
+//  LCUtlis.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
-
+#import <Foundation/Foundation.h>
 
 #define TP_SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
 //#define IOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
@@ -54,11 +53,11 @@
 #define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
 #define HEXCOLORA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
 
-#import <Foundation/Foundation.h>
+#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface ESOnUtlis : NSObject
+@interface LCUtlis : NSObject
 
 @end
 
diff --git a/iOS/Xamarin/LCOnDemo/LCOnDemo/ViewController.m b/iOS/Xamarin/LCOnDemo/LCOnDemo/ViewController.m
index 02d5641..33d4153 100644
--- a/iOS/Xamarin/LCOnDemo/LCOnDemo/ViewController.m
+++ b/iOS/Xamarin/LCOnDemo/LCOnDemo/ViewController.m
@@ -8,9 +8,11 @@
 #import "ViewController.h"
 #import "LCOnIntercomViewController.h"
 #import "LCOnMonitorViewController.h"
-#import "LCKit.h"
+#import "LCUtlis.h"
+#import "LCCallDelegate.h"
+#import "LCApiKit.h"
 
-@interface ViewController ()
+@interface ViewController ()<LCCallDelegate>
 
 @end
 
@@ -21,7 +23,7 @@
     // Do any additional setup after loading the view.
     
     //鍒濆鍖朙COpenSDK_Api
-    [[LCApiKit sharedInstance] initSDKOpenApi:@"St_00008beee10488c34ec494bc1732e1d8"];
+    [[LCApiKit sharedInstance] initSDKOpenApi:@"St_00003e12612fa94244d9a690564cd04b"];
     [[LCApiKit sharedInstance] setCurrentDevicePlayToken:@"kjcIZVPXrxmGRvHDeFfuIlCO/PHeAiPok6s0OhwLZZ0EsjA9ocumo1JFkvyJBTnnG/j0/aMmpwav9Qbg/qceXMI4DiLbcYqff6q9Sn+Afoyo6mIjOnV+Ft83RhvPDneP2b3Uv+qGK4x+ttq3kuAgTwZA+x80ZoDsUz8na8m+++lwC7QRQ0AXhgN4kc9BaOn0jCuuSPgX4hx0O+5rjtIdGv0UL7KYNmkeKQCCUOlbjg4cjI1UnKlWAh5NXXxmKZkS2Y8t2cGRnkxXL+UkZ95QgPk+Luh/GhOgA4AzPwcitXe3WE43uUAikwgY5sytAVMvDz69Eis1a/ZSoR+UXY0J7BTKP5hoOvKphFmMQr+zi8qY/2WGqKWFx+wFplxe7E73lILyNqxO2klqMAv81IeL+6A6PqdGUC0uyaRIBOmW4K2Rd2G6WcMqs+3SRfNSJcU2/MniRpgYUURNhaZF6erPsZ69jG2FS0XYVrDPvHMDoRkjElDHYdky1psgMUb4faQaQwgdKz6IydqqTr8QA8go1rjx4ub2B6vupuBG01fa2CDTgTZj4iiGVPOAtSmbyNxGKTaH6KhleWJ3s/d9mHgbPp/Y884KLTGgJ/sqvg/D1w8SiN1V5dcNc2jgXBT3Uc90vF2ryxMRMak0g+CIgkfB6t8VUrDalWlp9NTxRF2k8xyiq4RoqjK9dyzPOsZfs/KuA6Jok02EkTDjEXGknD8fDvSz6syYqhCrs97M+aaFZDNe2DmFsO+mRkPWX2wcLGq475k19Tox4gYRYLDE6TqvCY/VmvAY2C0h68sh9oEK5z8zg/D+fLiNS+rZZI7Hqs6XOsd88feZygpEs0ny8WdkQSqlqQTEetI+5kGRtZgsdhhvJ7/cEioI8eIHkdDkWmQxMgNfMwuDdn6Rq6zWho85v7T/xAzVhH5l535yZ3tloEKBo3dEoPc6wXHfwhTbw80JINLwn4LKxkeUkdDlMjQp5Z+CDx1fsiR6RYNlNZ288kqdvlo3hhrwQZ6vIQ/8nmAax54+tJiJ4kxCmBYn7AUA12Wj1/bdS/6uCTsyBVtxexYyOefZlPz3AklMjCEDhEIYAuGSnkqBgBfXJV9PnzLIPwp6e4QmKl9M3a4ZpZ8Fxkc="];
     [[LCApiKit sharedInstance] setCurrentDeviceId:@"6K056CFAAJ8FFA1"];
     [[LCApiKit sharedInstance] setCurrentDeviceName:@"澶у崕鍙瀵硅"];
@@ -31,6 +33,8 @@
 ///鐩戞帶
 - (IBAction)monitoringAction:(id)sender {
     LCOnMonitorViewController *mVc = [[LCOnMonitorViewController alloc] init];
+    
+    
 
     [self.navigationController.navigationBar setHidden: YES];
     [self.navigationController pushViewController:mVc animated:YES];
@@ -40,9 +44,39 @@
 - (IBAction)callAction:(id)sender {
     
     LCOnIntercomViewController *mVc = [[LCOnIntercomViewController alloc] init];
-
+    mVc.mLCCallDelegate = self;
     [self.navigationController.navigationBar setHidden: YES];
     [self.navigationController pushViewController:mVc animated:YES];
 }
 
+
+
+- (void)onAnswerAction {
+    
+}
+
+- (void)onHangUpAction:(int)callDuration {
+    
+}
+
+- (void)onRejectCallAction {
+    
+}
+
+- (void)onScreenshotSuccessfulAction:(nonnull UIImage *)image {
+    
+}
+
+- (void)onUnlockAction {
+    NSLog(@"onUnlockAction锛氬噯澶囧紑閿�");
+    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
+    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
+        NSLog(@"onUnlockAction锛氶�氱煡寮�閿佹垚鍔�");
+        [[NSNotificationCenter defaultCenter] postNotificationName:LCCallDelegateOpenDoorSuccess
+                                                            object:self];
+    });
+ 
+}
+
+
 @end
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin.xcodeproj/project.pbxproj b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin.xcodeproj/project.pbxproj
index 16be71b..86cdb68 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin.xcodeproj/project.pbxproj
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin.xcodeproj/project.pbxproj
@@ -7,10 +7,17 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		B92E6AC9264B7A5500D63F4B /* LCCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B92E6AC7264B7A5500D63F4B /* LCCallDelegate.m */; };
+		B92E6ADE264BAFFA00D63F4B /* LCUtlis.h in Headers */ = {isa = PBXBuildFile; fileRef = B92E6AD0264BA8E100D63F4B /* LCUtlis.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		B92E6ADF264BAFFA00D63F4B /* LCCallDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B92E6AC8264B7A5500D63F4B /* LCCallDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		B92E6AE0264BAFFA00D63F4B /* LCApiKit.h in Headers */ = {isa = PBXBuildFile; fileRef = B93C23F4263909CB0088044F /* LCApiKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		B92E6AE1264BAFFA00D63F4B /* LCOnIntercomViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B93C23F2263909CB0088044F /* LCOnIntercomViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		B92E6AE2264BAFFA00D63F4B /* LCOnMonitorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B93C23F7263909CB0088044F /* LCOnMonitorViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		B92E6E81264CB4C200D63F4B /* LCApiKit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B93C23F4263909CB0088044F /* LCApiKit.h */; };
+		B92E6E8A264CBC7800D63F4B /* LCOpenSDKDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B92E6E89264CBC7800D63F4B /* LCOpenSDKDynamic.framework */; };
 		B93C23FB263909CC0088044F /* LCOnMonitorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B93C23F3263909CB0088044F /* LCOnMonitorViewController.m */; };
 		B93C23FC263909CC0088044F /* LCOnIntercomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B93C23F6263909CB0088044F /* LCOnIntercomViewController.m */; };
 		B93C23FE263909CC0088044F /* LCApiKit.m in Sources */ = {isa = PBXBuildFile; fileRef = B93C23FA263909CC0088044F /* LCApiKit.m */; };
-		B93C2402263909DE0088044F /* LCOpenSDKDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C2401263909DE0088044F /* LCOpenSDKDynamic.framework */; };
 		B93C2404263909EA0088044F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C2403263909EA0088044F /* CoreAudio.framework */; };
 		B93C2406263909F10088044F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C2405263909F10088044F /* MediaPlayer.framework */; };
 		B93C2408263909F90088044F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C2407263909F90088044F /* AudioToolbox.framework */; };
@@ -21,33 +28,42 @@
 		B93C241226390A220088044F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C241126390A220088044F /* AVFoundation.framework */; };
 		B93C241426390A2A0088044F /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C241326390A2A0088044F /* CoreMedia.framework */; };
 		B93C241626390A330088044F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B93C241526390A330088044F /* libz.tbd */; };
-		B93C241926390A780088044F /* LCOpenSDKDynamic.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B93C2401263909DE0088044F /* LCOpenSDKDynamic.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
+		B92E6E80264CB4B300D63F4B /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				B92E6E81264CB4C200D63F4B /* LCApiKit.h in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		B93C23E2263908E10088044F /* CopyFiles */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "include/$(PRODUCT_NAME)";
 			dstSubfolderSpec = 10;
 			files = (
-				B93C241926390A780088044F /* LCOpenSDKDynamic.framework in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		B92E6AC7264B7A5500D63F4B /* LCCallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCCallDelegate.m; sourceTree = "<group>"; };
+		B92E6AC8264B7A5500D63F4B /* LCCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCCallDelegate.h; sourceTree = "<group>"; };
+		B92E6AD0264BA8E100D63F4B /* LCUtlis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCUtlis.h; sourceTree = "<group>"; };
+		B92E6E89264CBC7800D63F4B /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LCOpenSDKDynamic.framework; path = Depend/LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
 		B93C23E4263908E10088044F /* libLCSDKOnXamarin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libLCSDKOnXamarin.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		B93C23F2263909CB0088044F /* LCOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnIntercomViewController.h; sourceTree = "<group>"; };
 		B93C23F3263909CB0088044F /* LCOnMonitorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnMonitorViewController.m; sourceTree = "<group>"; };
 		B93C23F4263909CB0088044F /* LCApiKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCApiKit.h; sourceTree = "<group>"; };
-		B93C23F5263909CB0088044F /* ESCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESCallDelegate.h; sourceTree = "<group>"; };
 		B93C23F6263909CB0088044F /* LCOnIntercomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCOnIntercomViewController.m; sourceTree = "<group>"; };
 		B93C23F7263909CB0088044F /* LCOnMonitorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCOnMonitorViewController.h; sourceTree = "<group>"; };
-		B93C23F9263909CC0088044F /* LCKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCKit.h; sourceTree = "<group>"; };
 		B93C23FA263909CC0088044F /* LCApiKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCApiKit.m; sourceTree = "<group>"; };
-		B93C2401263909DE0088044F /* LCOpenSDKDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LCOpenSDKDynamic.framework; path = Depend/LCOpenSDKDynamic.framework; sourceTree = "<group>"; };
 		B93C2403263909EA0088044F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; };
 		B93C2405263909F10088044F /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; };
 		B93C2407263909F90088044F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
@@ -65,6 +81,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				B92E6E8A264CBC7800D63F4B /* LCOpenSDKDynamic.framework in Frameworks */,
 				B93C241626390A330088044F /* libz.tbd in Frameworks */,
 				B93C241426390A2A0088044F /* CoreMedia.framework in Frameworks */,
 				B93C241226390A220088044F /* AVFoundation.framework in Frameworks */,
@@ -75,7 +92,6 @@
 				B93C2408263909F90088044F /* AudioToolbox.framework in Frameworks */,
 				B93C2406263909F10088044F /* MediaPlayer.framework in Frameworks */,
 				B93C2404263909EA0088044F /* CoreAudio.framework in Frameworks */,
-				B93C2402263909DE0088044F /* LCOpenSDKDynamic.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -102,10 +118,11 @@
 		B93C23E6263908E10088044F /* LCSDKOnXamarin */ = {
 			isa = PBXGroup;
 			children = (
-				B93C23F5263909CB0088044F /* ESCallDelegate.h */,
+				B92E6AD0264BA8E100D63F4B /* LCUtlis.h */,
+				B92E6AC8264B7A5500D63F4B /* LCCallDelegate.h */,
+				B92E6AC7264B7A5500D63F4B /* LCCallDelegate.m */,
 				B93C23F4263909CB0088044F /* LCApiKit.h */,
 				B93C23FA263909CC0088044F /* LCApiKit.m */,
-				B93C23F9263909CC0088044F /* LCKit.h */,
 				B93C23F2263909CB0088044F /* LCOnIntercomViewController.h */,
 				B93C23F6263909CB0088044F /* LCOnIntercomViewController.m */,
 				B93C23F7263909CB0088044F /* LCOnMonitorViewController.h */,
@@ -117,6 +134,7 @@
 		B93C2400263909DE0088044F /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				B92E6E89264CBC7800D63F4B /* LCOpenSDKDynamic.framework */,
 				B93C241526390A330088044F /* libz.tbd */,
 				B93C241326390A2A0088044F /* CoreMedia.framework */,
 				B93C241126390A220088044F /* AVFoundation.framework */,
@@ -127,21 +145,37 @@
 				B93C2407263909F90088044F /* AudioToolbox.framework */,
 				B93C2405263909F10088044F /* MediaPlayer.framework */,
 				B93C2403263909EA0088044F /* CoreAudio.framework */,
-				B93C2401263909DE0088044F /* LCOpenSDKDynamic.framework */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
 
+/* Begin PBXHeadersBuildPhase section */
+		B92E6ADD264BAFCD00D63F4B /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B92E6ADE264BAFFA00D63F4B /* LCUtlis.h in Headers */,
+				B92E6ADF264BAFFA00D63F4B /* LCCallDelegate.h in Headers */,
+				B92E6AE0264BAFFA00D63F4B /* LCApiKit.h in Headers */,
+				B92E6AE1264BAFFA00D63F4B /* LCOnIntercomViewController.h in Headers */,
+				B92E6AE2264BAFFA00D63F4B /* LCOnMonitorViewController.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
 /* Begin PBXNativeTarget section */
 		B93C23E3263908E10088044F /* LCSDKOnXamarin */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = B93C23ED263908E10088044F /* Build configuration list for PBXNativeTarget "LCSDKOnXamarin" */;
 			buildPhases = (
+				B92E6ADD264BAFCD00D63F4B /* Headers */,
 				B93C23E0263908E10088044F /* Sources */,
 				B93C23E1263908E10088044F /* Frameworks */,
 				B93C23E2263908E10088044F /* CopyFiles */,
+				B92E6E80264CB4B300D63F4B /* CopyFiles */,
 			);
 			buildRules = (
 			);
@@ -189,6 +223,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				B93C23FB263909CC0088044F /* LCOnMonitorViewController.m in Sources */,
+				B92E6AC9264B7A5500D63F4B /* LCCallDelegate.m in Sources */,
 				B93C23FE263909CC0088044F /* LCApiKit.m in Sources */,
 				B93C23FC263909CC0088044F /* LCOnIntercomViewController.m in Sources */,
 			);
@@ -325,6 +360,11 @@
 					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
 					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/LCSDKOnXamarin/LCOpenSDKDynamic",
+				);
+				ONLY_ACTIVE_ARCH = NO;
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SKIP_INSTALL = YES;
@@ -348,6 +388,10 @@
 					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK",
 					"$(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenApi",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/LCSDKOnXamarin/LCOpenSDKDynamic",
+				);
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SKIP_INSTALL = YES;
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/ESCallDelegate.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/ESCallDelegate.h
deleted file mode 100644
index 0e8e50e..0000000
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/ESCallDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-//  ESCallDelegate.h
-//  ESVideoPhoneSDKDemo
-//
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol ESCallDelegate <NSObject>
-
-//鎺ュ惉鍥炶皟
--(void)onAnswerAction;
-
-//鎷掓帴鏉ョ數鍥炶皟
--(void)onRejectCallAction;
-
-//寮�濮嬫垚鍔熷洖璋�
--(void)onUnlockAction;
-
-//鎸傛柇锛堥�氳瘽缁撴潫锛�
--(void)onHangUpAction:(int)callDuration;
-
-//閫氳瘽瑙嗛鎴浘涓婁紶
--(void)onScreenshotSuccessfulAction:(UIImage *)image;
-
-@end
-
-@interface ESCallDelegate : NSObject
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.h
index 0f9bf9f..6bda54d 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.h
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.h
@@ -7,7 +7,9 @@
 
 #import <Foundation/Foundation.h>
 
+
 NS_ASSUME_NONNULL_BEGIN
+
 
 @interface LCApiKit : NSObject
 /**
@@ -41,6 +43,21 @@
 - (void)initSDKOpenApi:(NSString *)lcToken;
 ///// 鎷兼帴閿欒淇℃伅
 //- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code;
+
+/// 鎺ュ彛
+
+///**
+// *  @since
+// *  寮�閿佹帴鍙�
+// *
+// *  @param deviceId 璁惧搴忓垪鍙�
+// *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+// *
+// */
+//- (void)openDoorbell:(NSString *)deviceId completion:(void (^)(ResponseData *responseData))completion;
+
+
+
 @end
 
 
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.m b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.m
index dcfcf26..1241922 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.m
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCApiKit.m
@@ -6,7 +6,7 @@
 //
 
 #import "LCApiKit.h"
-#import "LCKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 #define DEFAULTHOSTAPICHN @"https://openapi.lechange.cn:443" //涓浗澶ч檰(姝e紡)
 #define DEFAULTHOSTAPIOVS @"https://openapi.easy4ip.com:443" //娴峰锛堟寮忥級
@@ -78,9 +78,9 @@
     NSLog(@"initSDKOpenApi: %@,@%ld", [self LCSDKHost], [self LCSDKPort]);
 }
 
-/// 鎷兼帴閿欒淇℃伅
-- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code
-{
-    return [NSString stringWithFormat:@"%@(%d)",message, code];
-}
+///// 鎷兼帴閿欒淇℃伅
+//- (NSString *) getErrorMesWithCode:(NSString *)message code:(int)code
+//{
+//    return [NSString stringWithFormat:@"%@(%d)",message, code];
+//}
 @end
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.h
similarity index 62%
copy from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
copy to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.h
index 0e8e50e..dfb8dc1 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.h
@@ -1,9 +1,8 @@
 //
-//  ESCallDelegate.h
-//  ESVideoPhoneSDKDemo
+//  LCCallDelegate.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/25.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
 #import <Foundation/Foundation.h>
@@ -11,7 +10,10 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@protocol ESCallDelegate <NSObject>
+//寮�閿佹垚鍔熼�氱煡
+extern NSString *const LCCallDelegateOpenDoorSuccess;
+
+@protocol LCCallDelegate <NSObject>
 
 //鎺ュ惉鍥炶皟
 -(void)onAnswerAction;
@@ -19,7 +21,7 @@
 //鎷掓帴鏉ョ數鍥炶皟
 -(void)onRejectCallAction;
 
-//寮�濮嬫垚鍔熷洖璋�
+//寮�閿佸洖璋�
 -(void)onUnlockAction;
 
 //鎸傛柇锛堥�氳瘽缁撴潫锛�
@@ -30,7 +32,7 @@
 
 @end
 
-@interface ESCallDelegate : NSObject
+@interface LCCallDelegate : NSObject
 
 @end
 
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.m b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.m
new file mode 100644
index 0000000..f4041f1
--- /dev/null
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCCallDelegate.m
@@ -0,0 +1,14 @@
+//
+//  LCCallDelegate.m
+//  LCOnDemo
+//
+//  Created by 闄堝槈涔� on 2021/5/12.
+//
+
+#import "LCCallDelegate.h"
+
+NSString *const LCCallDelegateOpenDoorSuccess = @"lcCallDelegateOpenDoorSuccess";
+
+@implementation LCCallDelegate
+
+@end
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCKit.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCKit.h
deleted file mode 100644
index 686588a..0000000
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCKit.h
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-//  Created by 闄堝槈涔� on 2021/4/25.
-//  LCOnDemo
-//
-
-#ifndef LCKit_h
-#define LCKit_h
-
-#define TP_SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
-//#define IOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
-#define IOS7  (TP_SYSTEM_VERSION >= 7.0)
-#define IOS8  (TP_SYSTEM_VERSION >= 8.0)
-#define IOS9  (TP_SYSTEM_VERSION >= 9.0)
-#define IOS10 (TP_SYSTEM_VERSION >= 10.0)
-
-//鏄惁鏄� iPhoneX_XS_11Pro璁惧
-#define IPhoneX ([UIScreen mainScreen].bounds.size.width == 375.0f && [UIScreen mainScreen].bounds.size.height == 812.0f)
-//鏄惁鏄� iPhoneXSMax_XR_11_11ProMax
-#define IPhoneXR ([UIScreen mainScreen].bounds.size.width == 414.0f && [UIScreen mainScreen].bounds.size.height == 896.0f)
-// 鏄叏闈㈠睆鎵嬫満
-#define IsFullScreen (IPhoneX || IPhoneXR)
-
-// Screen
-#define APP_SCREEN_BOUNDS   [[UIScreen mainScreen] bounds]
-#define APP_SCREEN_HEIGHT   (APP_SCREEN_BOUNDS.size.height)
-#define APP_SCREEN_WIDTH    (APP_SCREEN_BOUNDS.size.width)
-#define APP_STATUS_FRAME    [UIApplication sharedApplication].statusBarFrame
-
-#define APP_TOP_BAR_HEIGHT    (IsFullScreen ? 88 : (IOS7 ? 64 : 44))
-#define APP_STATUS_BAR_HEIGHT (IsFullScreen ? 44: (IOS7 ? 20 : 0))
-#define APP_STATUS_BAR_HEIGHT_TURE (IsFullScreen ? 44: (IOS7 ? 0 : 0))
-#define APP_TOOL_BAR_HEIGHT   49
-#define APP_TAB_BAR_HEIGHT    (IsFullScreen ? (49 + 34): 49)
-#define APP_CONTENT_WIDTH     (APP_SCREEN_BOUNDS.size.width)
-#define APP_BUTTOM_HEIGHT     (IsFullScreen ? 34: 0)
-#define APP_CONTENT_HEIGHT    (APP_SCREEN_HEIGHT - APP_TOP_BAR_HEIGHT - APP_TAB_BAR_HEIGHT)
-#define APP_VISIBLE_HEIGHT    (APP_SCREEN_HEIGHT - APP_TOP_BAR_HEIGHT -APP_BUTTOM_HEIGHT)
-#define APP_B_HEIGHT          (APP_SCREEN_HEIGHT - APP_BUTTOM_HEIGHT)
-#define APP_UIFont            @"PingFangSC-Regular"
-#define APP_UIFont_BOLD       @"PingFangSC-Semibold"
-
-
-#define DesignWidth 375
-#define DesignHeight 667
-#define GetRealWidth(W)  W / (DesignWidth * 1.0f / APP_SCREEN_WIDTH)
-#define GetRealHeight(H)  H / (DesignHeight * 1.0f / APP_SCREEN_HEIGHT)
-
-
-#define TextColor    HEXCOLORA(0x1B2D4D, 1.0)
-#define TextSelectColor    HEXCOLORA(0x4484F4, 1.0)
-/** WEAKSELF_AT */
-#define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
-#define HEXCOLORA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
-
-#import <Foundation/Foundation.h>
-
-#import "LCApiKit.h"
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h>
-#import <LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h>
-#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
-
-
-
-#endif /* LCUIKit_h */
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.h
index a602b63..5876640 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.h
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.h
@@ -6,17 +6,17 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "ESCallDelegate.h"
+#import "LCCallDelegate.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface LCOnIntercomViewController : UIViewController
 
-#pragma mark ESCallDelegate
+#pragma mark LCCallDelegate
 /**
- 涓版灄浜嬩欢浠g悊
+ 浜嬩欢浠g悊
  */
-@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
 
 #pragma mark 瀵瑰鎺ュ彛鏂规硶
 
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.m b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.m
index 6ef9962..8942409 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.m
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnIntercomViewController.m
@@ -9,7 +9,9 @@
 #import <AVFoundation/AVFoundation.h>
 #import <Photos/Photos.h>
 #import <AudioToolbox/AudioToolbox.h>
-#import "LCKit.h"
+#import "LCUtlis.h"
+#import "LCApiKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 @interface LCOnIntercomViewController ()<LCOpenSDK_EventListener, LCOpenSDK_TalkerListener>
 
@@ -90,8 +92,11 @@
     //寮�濮嬪弽鍛�
     [self StartReverseCall];
     [self ShowCalltimeBtn:callingStr];
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
+//    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
+//    [self setUnlock:NO];
+    //娉ㄥ唽寮�閿佹垚鍔熺洃鍚�
+    [self addOpenSuccessAction];
+    
     // Do any additional setup after loading the view.
 }
 
@@ -282,11 +287,10 @@
 
 -(void)unlockAction{
     [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
-    //    //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
-    
+    //寮�閿�
+    if(self.mLCCallDelegate != NULL){
+       [self.mLCCallDelegate onUnlockAction];
+    }
 }
 
 #pragma 鎸傛柇鍜屽紑閿�
@@ -305,13 +309,13 @@
 //鎸傛柇鎸夐挳浜嬩欢
 -(void)hangUpAction{
     //1.鍥炶皟浜嬩欢
-    if(self.mESCallDelegate != NULL){
+    if(self.mLCCallDelegate != NULL){
         if(isAnswer){
             //濡傛灉涔嬪墠宸茬粡鎺ュ惉浜嗭紝鍥炶皟鏄寕鏂�
-            [self.mESCallDelegate onHangUpAction:_callTimeout];
+            [self.mLCCallDelegate onHangUpAction:_callTimeout];
         }else{
             //濡傛灉涔嬪墠娌℃帴鍚簡锛屽洖璋冩槸鎷掓帴
-            [self.mESCallDelegate onRejectCallAction];
+            [self.mLCCallDelegate onRejectCallAction];
         }
     }
     //2.椤甸潰鍏抽棴
@@ -350,7 +354,7 @@
     [self stopPlaySystemSound];
     /// 寮�鍚璁�
     [self startTalk];
-
+    
     _answerImgBtn.hidden = YES;
     _answerTextBtn.hidden = YES;
     
@@ -364,8 +368,8 @@
     [self startCountdown];
     isAnswer = YES;
     
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onAnswerAction];
+    if(self.mLCCallDelegate != NULL){
+        [self.mLCCallDelegate onAnswerAction];
     }
     
 }
@@ -503,10 +507,7 @@
     _openDoorTimeout = 0;
     [self startOpenDoorCountdown];
     [self showUIAlertView:unlockSuccessfullyStr];
-    // 寮�閿佹垚鍔熷洖璋�
-    if(self.mESCallDelegate != NULL){
-        [self.mESCallDelegate onUnlockAction];
-    }
+    
 }
 
 -(void)setUnlock:(BOOL)ISEnable{
@@ -653,7 +654,7 @@
 - (void)startTalk {
     if (!isAnswer) {
         //瀵硅寮�鍚�
-//        [self.playWindow stopAudio];
+        //        [self.playWindow stopAudio];
         
         if(self.talker == NULL) return;
         
@@ -726,13 +727,13 @@
         if (type == 0) {
             
             if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             //鎻愮ず澶辫触
@@ -764,31 +765,31 @@
     dispatch_async(dispatch_get_main_queue(), ^{
         NSLog(@"寮�鍚璁插洖璋僥rror = %@, type = %ld", error, (long)type);
         WEAKSELF_AT(self);
-//        [LCProgressHUD hideAllHuds:nil];
-//        if (99 == type) {   //缃戠粶璇锋眰澶辫触
-////            dispatch_async(dispatch_get_main_queue(), ^{
-////                weakself.videoManager.isOpenAudioTalk = NO;
-////                [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-////            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//            });
-//            return;
-//        }
-//        if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) {
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//                //瀵硅杩炴帴鎴愬姛寤虹珛
-//                self.videoManager.isOpenAudioTalk = YES;
-//                [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T];
-//            });
-//            return;
-//        }
-//        dispatch_async(dispatch_get_main_queue(), ^{
-//            [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
-//            weakself.videoManager.isOpenAudioTalk = NO;
-//        });
+        //        [LCProgressHUD hideAllHuds:nil];
+        //        if (99 == type) {   //缃戠粶璇锋眰澶辫触
+        ////            dispatch_async(dispatch_get_main_queue(), ^{
+        ////                weakself.videoManager.isOpenAudioTalk = NO;
+        ////                [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
+        ////            });
+        //            return;
+        //        }
+        //        if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) {
+        //            dispatch_async(dispatch_get_main_queue(), ^{
+        //            });
+        //            return;
+        //        }
+        //        if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) {
+        //            dispatch_async(dispatch_get_main_queue(), ^{
+        //                //瀵硅杩炴帴鎴愬姛寤虹珛
+        //                self.videoManager.isOpenAudioTalk = YES;
+        //                [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T];
+        //            });
+        //            return;
+        //        }
+        //        dispatch_async(dispatch_get_main_queue(), ^{
+        //            [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T];
+        //            weakself.videoManager.isOpenAudioTalk = NO;
+        //        });
     });
 }
 
@@ -1025,8 +1026,8 @@
     if (!error) {
         message = saveToTheAlbumsStr;
         // 鎴浘鎴愬姛鍥炶皟
-        if(self.mESCallDelegate != NULL){
-            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
+        if(self.mLCCallDelegate != NULL){
+            [self.mLCCallDelegate onScreenshotSuccessfulAction:image];
         }
     }
     else
@@ -1079,7 +1080,7 @@
 //寮�濮嬫挱鏀剧殑鏃跺�欒皟鐢�
 -(void)startPlaySystemSound{
     
-//    return;
+    //    return;
     //    //闇囧姩鐨勬彁绀烘枃浠跺悕鏀惧埌璧勬簮鐩綍涓�
     //    NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
     //    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
@@ -1092,7 +1093,7 @@
 
 //鎵嬪姩鍋滄鎾斁鐨勬椂鍊欒皟鐢�
 - (void)stopPlaySystemSound{
-//    return;
+    //    return;
     NSLog(@"stop PlaySystemSound");
     stopRingAndVibration();
 }
@@ -1119,8 +1120,25 @@
 //}
 
 
+///
+- (void)addOpenSuccessAction {
 
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
 
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(setOpenDoorSuccess)
+                                                 name:LCCallDelegateOpenDoorSuccess
+                                               object:nil];
+}
+
+- (void)removeOpenSuccessAction {
+
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
+}
 
 @end
 
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.h
index cd7d460..11e6d4e 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.h
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.h
@@ -6,11 +6,20 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "LCCallDelegate.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface LCOnMonitorViewController : UIViewController
 
+#pragma mark LCCallDelegate
+/**
+ 浜嬩欢浠g悊
+ */
+@property (nonatomic, weak) id<LCCallDelegate> mLCCallDelegate;
+
+#pragma mark 瀵瑰鎺ュ彛鏂规硶
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.m b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.m
index e0294c2..ff39a7f 100644
--- a/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.m
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOnMonitorViewController.m
@@ -8,9 +8,9 @@
 #import "LCOnMonitorViewController.h"
 #import <AVFoundation/AVFoundation.h>
 #import <Photos/Photos.h>
-#import "LCKit.h"
-
-
+#import "LCUtlis.h"
+#import "LCApiKit.h"
+#import <LCOpenSDKDynamic/LCOpenSDKDynamic.h>
 
 @interface LCOnMonitorViewController ()<LCOpenSDK_EventListener>
 
@@ -76,8 +76,10 @@
     [self initESVideo];
     [self StartMonitoring];
     
-    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
-    [self setUnlock:NO];
+//    //鏆傛椂涓嶆敮鎸佸紑閿佸姛鑳�
+//    [self setUnlock:NO];
+    //娉ㄥ唽寮�閿佹垚鍔熺洃鍚�
+    [self addOpenSuccessAction];
     // Do any additional setup after loading the view.
 }
 
@@ -277,9 +279,9 @@
     [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
     [_unlockTextBtn setTitleColor:TextColor forState:UIControlStateNormal];
     //寮�閿�
-    //    if(_es){
-    //        [_es openTheDoorWithRoomid:_mESRoomID];
-    //    }
+    if(self.mLCCallDelegate != NULL){
+        [self.mLCCallDelegate onUnlockAction];
+    }
 }
 
 - (UIButton *)unlockTextBtn{
@@ -479,13 +481,13 @@
         if (type == 0) {
             
             if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) {
-//                dispatch_async(dispatch_get_main_queue(), ^{
-//                });
+                //                dispatch_async(dispatch_get_main_queue(), ^{
+                //                });
                 return;
             }
             //鎻愮ず澶辫触
@@ -1069,6 +1071,18 @@
     
 }
 
+- (void)addOpenSuccessAction {
+
+    [[NSNotificationCenter defaultCenter] removeObserver:self
+                                                    name:LCCallDelegateOpenDoorSuccess
+                                                  object:nil];
+
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(setOpenDoorSuccess)
+                                                 name:LCCallDelegateOpenDoorSuccess
+                                               object:nil];
+}
+
 
 @end
 
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddGroup.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroup.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddGroup.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroup.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddGroupDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroupDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddGroupDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddGroupDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddRole.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddRole.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/AddRole.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/AddRole.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BeAuthDeviceList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BeAuthDeviceList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BeAuthDeviceList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BeAuthDeviceList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDeviceChannelInfo.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceChannelInfo.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDeviceChannelInfo.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceChannelInfo.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDeviceInfo.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceInfo.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BindDeviceInfo.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BindDeviceInfo.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BreathingLightStatus.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BreathingLightStatus.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/BreathingLightStatus.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/BreathingLightStatus.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CheckDeviceBindOrNot.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CheckDeviceBindOrNot.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CheckDeviceBindOrNot.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CheckDeviceBindOrNot.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ChildGroupList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ChildGroupList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ChildGroupList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ChildGroupList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CloudRecordPlan.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CloudRecordPlan.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CloudRecordPlan.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CloudRecordPlan.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ControlDeviceWifi.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlDeviceWifi.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ControlDeviceWifi.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlDeviceWifi.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ControlPTZ.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlPTZ.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ControlPTZ.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ControlPTZ.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CurrentDeviceWifi.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CurrentDeviceWifi.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/CurrentDeviceWifi.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/CurrentDeviceWifi.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteAlarmMessage.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteAlarmMessage.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteAlarmMessage.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteAlarmMessage.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteCloudPlanRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudPlanRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteCloudPlanRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudPlanRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteCloudRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteCloudRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteCloudRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteGroup.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroup.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteGroup.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroup.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteGroupDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroupDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteGroupDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteGroupDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteRole.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteRole.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteRole.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteRole.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteUserAuthTager.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteUserAuthTager.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeleteUserAuthTager.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeleteUserAuthTager.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceAlarmPlan.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAlarmPlan.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceAlarmPlan.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAlarmPlan.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceAuthInfo.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAuthInfo.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceAuthInfo.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceAuthInfo.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceOnline.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceOnline.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceOnline.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceOnline.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceVersionList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceVersionList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/DeviceVersionList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/DeviceVersionList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/FrameReverseStatus.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/FrameReverseStatus.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/FrameReverseStatus.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/FrameReverseStatus.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetAlarmMessage.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAlarmMessage.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetAlarmMessage.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAlarmMessage.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetAuthFunctions.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAuthFunctions.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetAuthFunctions.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetAuthFunctions.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetCloudRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetCloudRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetCloudRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetCloudRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetRecordByLinkageId.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetRecordByLinkageId.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetRecordByLinkageId.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetRecordByLinkageId.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetStorageStrategy.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStorageStrategy.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetStorageStrategy.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStorageStrategy.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetStrategies.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStrategies.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GetStrategies.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GetStrategies.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GroupDeviceList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupDeviceList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GroupDeviceList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupDeviceList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GroupList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/GroupList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/GroupList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyBreathingLight.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyBreathingLight.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyBreathingLight.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyBreathingLight.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyCloudRecordPlan.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyCloudRecordPlan.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyCloudRecordPlan.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyCloudRecordPlan.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceAlarmPlan.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmPlan.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceAlarmPlan.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmPlan.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceAlarmStatus.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmStatus.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceAlarmStatus.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceAlarmStatus.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceName.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceName.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDeviceName.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDeviceName.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDevicePwd.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDevicePwd.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyDevicePwd.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyDevicePwd.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyFrameReverseStatus.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyFrameReverseStatus.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ModifyFrameReverseStatus.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ModifyFrameReverseStatus.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/OpenCloudRecord.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/OpenCloudRecord.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/OpenCloudRecord.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/OpenCloudRecord.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/PassengerFlow.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/PassengerFlow.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/PassengerFlow.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/PassengerFlow.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecordBitmap.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordBitmap.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecordBitmap.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordBitmap.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecordNum.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordNum.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecordNum.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecordNum.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudPlanRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudPlanRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordBitmap.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordBitmap.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordBitmap.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordBitmap.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordCallNum.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordCallNum.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordCallNum.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordCallNum.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordNum.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordNum.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecordNum.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecordNum.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryCloudRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryCloudRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecordBitmap.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordBitmap.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecordBitmap.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordBitmap.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecordNum.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordNum.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecordNum.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecordNum.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecords.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecords.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/QueryLocalRecords.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/QueryLocalRecords.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/RecoverSDCard.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RecoverSDCard.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/RecoverSDCard.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RecoverSDCard.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/RoleList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RoleList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/RoleList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/RoleList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetAllStorageStrategy.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetAllStorageStrategy.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetAllStorageStrategy.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetAllStorageStrategy.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetDeviceSnap.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetDeviceSnap.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetDeviceSnap.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetDeviceSnap.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetStorageStrategy.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetStorageStrategy.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetStorageStrategy.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetStorageStrategy.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetUserAuthTager.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetUserAuthTager.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/SetUserAuthTager.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/SetUserAuthTager.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ShareDeviceList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ShareDeviceList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/ShareDeviceList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/ShareDeviceList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnBindDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnBindDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnBindDeviceInfo.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDeviceInfo.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnBindDeviceInfo.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnBindDeviceInfo.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnGroupDeviceList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnGroupDeviceList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UnGroupDeviceList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UnGroupDeviceList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UpgradeDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UpgradeDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UpgradeProcessDevice.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeProcessDevice.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UpgradeProcessDevice.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UpgradeProcessDevice.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UploadDeviceCoverPicture.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UploadDeviceCoverPicture.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UploadDeviceCoverPicture.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UploadDeviceCoverPicture.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserAuthList.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserAuthList.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserAuthList.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserAuthList.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserBindNoVerify.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserBindNoVerify.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserBindNoVerify.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserBindNoVerify.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserTokenByAccount.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserTokenByAccount.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/UserTokenByAccount.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/UserTokenByAccount.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/WifiAround.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/WifiAround.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApi/WifiAround.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApi/WifiAround.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiDefine.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiDefine.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiDefine.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiDefine.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiRequest.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiRequest.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiRequest.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiRequest.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiResponse.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiResponse.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenApiResponse.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenApiResponse.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK/LCOpenSDK_NetsdkLogin.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/LCOpenSDK_NetsdkLogin.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK/LCOpenSDK_NetsdkLogin.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/LCOpenSDK_NetsdkLogin.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK/netsdk.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/netsdk.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK/netsdk.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenNetSDK/netsdk.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Api.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Api.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Api.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_AudioTalk.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_AudioTalk.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_AudioTalk.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_ConfigWifi.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_ConfigWifi.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_ConfigWifi.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_ConfigWifi.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Define.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Define.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Define.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_DeviceInit.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DeviceInit.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_DeviceInit.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DeviceInit.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Download.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Download.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Download.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Download.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_DownloadListener.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DownloadListener.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_DownloadListener.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_DownloadListener.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_EventListener.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_EventListener.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_EventListener.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Log.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Log.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Log.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Log.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_LoginManager.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_LoginManager.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_LoginManager.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_LoginManager.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Param.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Param.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Param.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Param.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_PlayWindow.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_PlayWindow.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_PlayWindow.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_SoftAP.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_SoftAP.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_SoftAP.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_SoftAP.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_TalkerListener.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_TalkerListener.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_TalkerListener.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_TalkerListener.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Utils.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Utils.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDK/LCOpenSDK_Utils.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDK/LCOpenSDK_Utils.h
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/LCOpenSDKDynamic.a b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.a
similarity index 100%
copy from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/LCOpenSDKDynamic.a
copy to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.a
Binary files differ
diff --git a/iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDKDynamic.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.h
similarity index 100%
rename from iOS/Xamarin/ESVideoOnXamarin/Extern/LCOpenSDKDynamic.framework/Headers/LCOpenSDKDynamic.h
rename to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCOpenSDKDynamic/LCOpenSDKDynamic.h
diff --git a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCUtlis.h
similarity index 91%
copy from iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
copy to iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCUtlis.h
index ac50ea5..c50a61b 100644
--- a/iOS/Xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnUtlis.h
+++ b/iOS/Xamarin/LCSDKOnXamarin/LCSDKOnXamarin/LCUtlis.h
@@ -1,12 +1,11 @@
 //
-//  ESOnUtlis.h
-//  ESVideoPhoneSDKDemo
+//  LCUtlis.h
+//  LCOnDemo
 //
-//  Created by 闄堝槈涔� on 2021/3/11.
-//  Copyright 漏 2021 eTouchSky. All rights reserved.
+//  Created by 闄堝槈涔� on 2021/5/12.
 //
 
-
+#import <Foundation/Foundation.h>
 
 #define TP_SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
 //#define IOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
@@ -54,11 +53,11 @@
 #define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self;
 #define HEXCOLORA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
 
-#import <Foundation/Foundation.h>
+#define RTSP_Result_String(enum) [@[ @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"99", @"100" ] objectAtIndex:enum]
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface ESOnUtlis : NSObject
+@interface LCUtlis : NSObject
 
 @end
 
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/README.md b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/README.md
deleted file mode 100644
index 79376cc..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## ON涔愭鍜屼赴鏋楀悓鏃跺悎骞朵竴璧锋墦鍖呯敓鎴怐LL搴�
-
-
-
-
-
-
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln
deleted file mode 100644
index 8ac5bfd..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-锘�
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.808.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS.ESVideoOnSDK", "Shared.IOS.ESVideoOnSDK\Shared.IOS.ESVideoOnSDK.csproj", "{D1832CED-B861-4FE3-A3BD-3D582C108D3A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {27227BDD-DE4C-42C8-9FF5-9DE1CE59EF1D}
-	EndGlobalSection
-EndGlobal
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/ApiDefinition.cs b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/ApiDefinition.cs
deleted file mode 100644
index c3cfe61..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/ApiDefinition.cs
+++ /dev/null
@@ -1,209 +0,0 @@
-锘縰sing System;
-
-using ObjCRuntime;
-using Foundation;
-using UIKit;
-
-/// <summary>
-/// V2.0.1
-/// ## ON涔愭鍜屼赴鏋楀悓鏃跺悎骞朵竴璧锋墦鍖呯敓鎴怐LL搴�
-/// </summary>
-namespace Shared.IOS.ESVideoOnSDK
-{
-	// @interface ESVideo : NSObject
-	[BaseType(typeof(NSObject))]
-	interface ESVideo
-	{
-		//// @property (nonatomic, strong) int * _Nonnull es;
-		//[Export("es", ArgumentSemantic.Strong)]
-		//unsafe int* Es { get; set; }
-
-		//// @property (copy, nonatomic) int snapImageCallback;
-		//[Export("snapImageCallback", ArgumentSemantic.Copy)]
-		//int SnapImageCallback { get; set; }
-
-		// +(instancetype _Nonnull)shareInstance;
-		[Static]
-		[Export("shareInstance")]
-		ESVideo ShareInstance();
-
-		// +(void)haltSharedInstance;
-		[Static]
-		[Export("haltSharedInstance")]
-		void HaltSharedInstance();
-
-		// -(void)initSDK;
-		[Export("initSDK")]
-		void InitSDK();
-	}
-
-	// @protocol ESCallDelegate <NSObject>
-	[Protocol, Model(AutoGeneratedName = true)]
-	[BaseType(typeof(NSObject))]
-	interface ESCallDelegate
-	{
-		// @required -(void)onAnswerAction;
-		[Abstract]
-		[Export("onAnswerAction")]
-		void OnAnswerAction();
-
-		// @required -(void)onRejectCallAction;
-		[Abstract]
-		[Export("onRejectCallAction")]
-		void OnRejectCallAction();
-
-		// @required -(void)onUnlockAction;
-		[Abstract]
-		[Export("onUnlockAction")]
-		void OnUnlockAction();
-
-		// @required -(void)onHangUpAction:(int)callDuration;
-		[Abstract]
-		[Export("onHangUpAction:")]
-		void OnHangUpAction(int callDuration);
-
-		// @required -(void)onScreenshotSuccessfulAction:(UIImage * _Nonnull)image;
-		[Abstract]
-		[Export("onScreenshotSuccessfulAction:")]
-		void OnScreenshotSuccessfulAction(UIImage image);
-	}
-
-	//// @interface ESCallDelegate : NSObject
-	//[BaseType(typeof(NSObject))]
-	//interface ESCallDelegate
-	//{
-	//}
-
-	// @interface ESOnIntercomViewController : UIViewController
-	[BaseType(typeof(UIViewController))]
-	interface ESOnIntercomViewController
-	{
-		// @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
-		[Export("mESVideoID", ArgumentSemantic.Strong)]
-		string MESVideoID { get; set; }
-
-		// @property (assign, nonatomic) int mESRoomID;
-		[Export("mESRoomID")]
-		int MESRoomID { get; set; }
-
-		// @property (nonatomic, strong) NSString * _Nonnull roomName;
-		[Export("roomName", ArgumentSemantic.Strong)]
-		string RoomName { get; set; }
-
-		// @property (nonatomic, strong) NSString * _Nonnull deviceName;
-		[Export("deviceName", ArgumentSemantic.Strong)]
-		string DeviceName { get; set; }
-
-		[Wrap("WeakMESCallDelegate")]
-		[NullAllowed]
-		ESCallDelegate MESCallDelegate { get; set; }
-
-		// @property (nonatomic, weak) id<ESCallDelegate> _Nullable mESCallDelegate;
-		[NullAllowed, Export("mESCallDelegate", ArgumentSemantic.Weak)]
-		NSObject WeakMESCallDelegate { get; set; }
-	}
-
-	// @interface ESOnMonitorViewController : UIViewController
-	[BaseType(typeof(UIViewController))]
-	interface ESOnMonitorViewController
-	{
-		// @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
-		[Export("mESVideoID", ArgumentSemantic.Strong)]
-		string MESVideoID { get; set; }
-
-		// @property (assign, nonatomic) int mESRoomID;
-		[Export("mESRoomID")]
-		int MESRoomID { get; set; }
-
-		// @property (nonatomic, strong) NSString * _Nonnull roomName;
-		[Export("roomName", ArgumentSemantic.Strong)]
-		string RoomName { get; set; }
-
-		// @property (nonatomic, strong) NSString * _Nonnull deviceName;
-		[Export("deviceName", ArgumentSemantic.Strong)]
-		string DeviceName { get; set; }
-
-		[Wrap("WeakMESCallDelegate")]
-		[NullAllowed]
-		ESCallDelegate MESCallDelegate { get; set; }
-
-		// @property (nonatomic, weak) id<ESCallDelegate> _Nullable mESCallDelegate;
-		[NullAllowed, Export("mESCallDelegate", ArgumentSemantic.Weak)]
-		NSObject WeakMESCallDelegate { get; set; }
-	}
-
-
-	////*******************涔愭鍙瀵硅*********************
-	//// @interface LCApiKit : NSObject
-	//[BaseType(typeof(NSObject))]
-	//interface LCApiKit
-	//{
-	//	// +(instancetype _Nonnull)sharedInstance;
-	//	[Static]
-	//	[Export("sharedInstance")]
-	//	LCApiKit SharedInstance();
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull lcSdkToken;
-	//	[Export("lcSdkToken", ArgumentSemantic.Strong)]
-	//	string LcSdkToken { get; set; }
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull sdkHostApi;
-	//	[Export("sdkHostApi", ArgumentSemantic.Strong)]
-	//	string SdkHostApi { get; set; }
-
-	//	// @property (assign, nonatomic) _Bool isChinaMainland;
-	//	[Export("isChinaMainland")]
-	//	bool IsChinaMainland { get; set; }
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull currentDeviceId;
-	//	[Export("currentDeviceId", ArgumentSemantic.Strong)]
-	//	string CurrentDeviceId { get; set; }
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull currentDeviceName;
-	//	[Export("currentDeviceName", ArgumentSemantic.Strong)]
-	//	string CurrentDeviceName { get; set; }
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull currentPsk;
-	//	[Export("currentPsk", ArgumentSemantic.Strong)]
-	//	string CurrentPsk { get; set; }
-
-	//	// @property (nonatomic, strong) NSString * _Nonnull currentDevicePlayToken;
-	//	[Export("currentDevicePlayToken", ArgumentSemantic.Strong)]
-	//	string CurrentDevicePlayToken { get; set; }
-
-	//	// -(NSString * _Nonnull)LCSDKHost;
-	//	[Export("LCSDKHost")]
-	//	//[Verify(MethodToProperty)]
-	//	string LCSDKHost { get; }
-
-	//	// -(NSInteger)LCSDKPort;
-	//	[Export("LCSDKPort")]
-	//	//[Verify(MethodToProperty)]
-	//	nint LCSDKPort { get; }
-
-	//	// -(void)initSDKOpenApi:(NSString * _Nonnull)lcToken;
-	//	[Export("initSDKOpenApi:")]
-	//	void InitSDKOpenApi(string lcToken);
-	//}
-
-	//// @interface LCOnIntercomViewController : UIViewController
-	//[BaseType(typeof(UIViewController))]
-	//interface LCOnIntercomViewController
-	//{
-	//	[Wrap("WeakMESCallDelegate")]
-	//	[NullAllowed]
-	//	ESCallDelegate MESCallDelegate { get; set; }
-
-	//	// @property (nonatomic, weak) id<ESCallDelegate> _Nullable mESCallDelegate;
-	//	[NullAllowed, Export("mESCallDelegate", ArgumentSemantic.Weak)]
-	//	NSObject WeakMESCallDelegate { get; set; }
-	//}
-
-	//// @interface LCOnMonitorViewController : UIViewController
-	//[BaseType(typeof(UIViewController))]
-	//interface LCOnMonitorViewController
-	//{
-	//}
-
-}
-
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/ESVideoPhoneSDk.a b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/ESVideoPhoneSDk.a
deleted file mode 100644
index d1587ef..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/ESVideoPhoneSDk.a
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libESVideoOnXamarin.a b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libESVideoOnXamarin.a
deleted file mode 100644
index 4e69b03..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libESVideoOnXamarin.a
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libLCSDKOnXamarin.a b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libLCSDKOnXamarin.a
deleted file mode 100644
index 72a34a2..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libLCSDKOnXamarin.a
+++ /dev/null
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Structs.cs b/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Structs.cs
deleted file mode 100644
index 2d795ce..0000000
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Structs.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-锘縰sing System;
-
-namespace Shared.IOS.ESVideoOnSDK
-{
-}
-
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.sln
similarity index 62%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.sln
index 51c91c3..f2cafe5 100644
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.sln
@@ -3,7 +3,7 @@
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.808.1
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS.ESVideoOnSDK", "Shared.IOS.ESVideoOnSDK.csproj", "{D1832CED-B861-4FE3-A3BD-3D582C108D3A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS.LCVideoOnSDK", "Shared.IOS.LCVideoOnSDK\Shared.IOS.LCVideoOnSDK.csproj", "{D78A9ED7-34A3-416F-B645-7475E2E2DE93}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,15 +11,15 @@
 		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D78A9ED7-34A3-416F-B645-7475E2E2DE93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D78A9ED7-34A3-416F-B645-7475E2E2DE93}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D78A9ED7-34A3-416F-B645-7475E2E2DE93}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D78A9ED7-34A3-416F-B645-7475E2E2DE93}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {6527B90F-D907-4370-A1FE-B8E5E38BFF64}
+		SolutionGuid = {7B522C01-9831-4869-9C01-9ABF0A4AE980}
 	EndGlobalSection
 EndGlobal
diff --git a/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/ApiDefinition.cs b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/ApiDefinition.cs
new file mode 100644
index 0000000..8e3e5a6
--- /dev/null
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/ApiDefinition.cs
@@ -0,0 +1,128 @@
+锘縰sing System;
+
+using ObjCRuntime;
+using Foundation;
+using UIKit;
+
+namespace Shared.IOS.LCVideoOnSDK
+{
+	//[Static]
+	//[Verify(ConstantsInterfaceAssociation)]
+	//partial interface Constants
+	//{
+	//	// extern NSString *const _Nonnull LCCallDelegateOpenDoorSuccess;
+	//	[Field("LCCallDelegateOpenDoorSuccess", "__Internal")]
+	//	NSString LCCallDelegateOpenDoorSuccess { get; }
+	//}
+
+	// @protocol LCCallDelegate <NSObject>
+	[Protocol, Model(AutoGeneratedName = true)]
+	[BaseType(typeof(NSObject))]
+	interface LCCallDelegate
+	{
+		// @required -(void)onAnswerAction;
+		[Abstract]
+		[Export("onAnswerAction")]
+		void OnAnswerAction();
+
+		// @required -(void)onRejectCallAction;
+		[Abstract]
+		[Export("onRejectCallAction")]
+		void OnRejectCallAction();
+
+		// @required -(void)onUnlockAction;
+		[Abstract]
+		[Export("onUnlockAction")]
+		void OnUnlockAction();
+
+		// @required -(void)onHangUpAction:(int)callDuration;
+		[Abstract]
+		[Export("onHangUpAction:")]
+		void OnHangUpAction(int callDuration);
+
+		// @required -(void)onScreenshotSuccessfulAction:(UIImage * _Nonnull)image;
+		[Abstract]
+		[Export("onScreenshotSuccessfulAction:")]
+		void OnScreenshotSuccessfulAction(UIImage image);
+	}
+
+
+	// @interface LCOnIntercomViewController : UIViewController
+	[BaseType(typeof(UIViewController))]
+	interface LCOnIntercomViewController
+	{
+		[Wrap("WeakMLCCallDelegate")]
+		[NullAllowed]
+		LCCallDelegate MLCCallDelegate { get; set; }
+
+		// @property (nonatomic, weak) id<LCCallDelegate> _Nullable mLCCallDelegate;
+		[NullAllowed, Export("mLCCallDelegate", ArgumentSemantic.Weak)]
+		NSObject WeakMLCCallDelegate { get; set; }
+	}
+
+	// @interface LCOnMonitorViewController : UIViewController
+	[BaseType(typeof(UIViewController))]
+	interface LCOnMonitorViewController
+	{
+		[Wrap("WeakMLCCallDelegate")]
+		[NullAllowed]
+		LCCallDelegate MLCCallDelegate { get; set; }
+
+		// @property (nonatomic, weak) id<LCCallDelegate> _Nullable mLCCallDelegate;
+		[NullAllowed, Export("mLCCallDelegate", ArgumentSemantic.Weak)]
+		NSObject WeakMLCCallDelegate { get; set; }
+	}
+
+    // @interface LCApiKit : NSObject
+    [BaseType(typeof(NSObject))]
+    interface LCApiKit
+    {
+        // +(instancetype _Nonnull)sharedInstance;
+        [Static]
+        [Export("sharedInstance")]
+        LCApiKit SharedInstance();
+
+        // @property (nonatomic, strong) NSString * _Nonnull lcSdkToken;
+        [Export("lcSdkToken", ArgumentSemantic.Strong)]
+        string LcSdkToken { get; set; }
+
+        // @property (nonatomic, strong) NSString * _Nonnull sdkHostApi;
+        [Export("sdkHostApi", ArgumentSemantic.Strong)]
+        string SdkHostApi { get; set; }
+
+        // @property (assign, nonatomic) _Bool isChinaMainland;
+        [Export("isChinaMainland")]
+        bool IsChinaMainland { get; set; }
+
+        // @property (nonatomic, strong) NSString * _Nonnull currentDeviceId;
+        [Export("currentDeviceId", ArgumentSemantic.Strong)]
+        string CurrentDeviceId { get; set; }
+
+        // @property (nonatomic, strong) NSString * _Nonnull currentDeviceName;
+        [Export("currentDeviceName", ArgumentSemantic.Strong)]
+        string CurrentDeviceName { get; set; }
+
+        // @property (nonatomic, strong) NSString * _Nonnull currentPsk;
+        [Export("currentPsk", ArgumentSemantic.Strong)]
+        string CurrentPsk { get; set; }
+
+        // @property (nonatomic, strong) NSString * _Nonnull currentDevicePlayToken;
+        [Export("currentDevicePlayToken", ArgumentSemantic.Strong)]
+        string CurrentDevicePlayToken { get; set; }
+
+        // -(NSString * _Nonnull)LCSDKHost;
+        [Export("LCSDKHost")]
+        //[Verify(MethodToProperty)]
+        string LCSDKHost { get; }
+
+        // -(NSInteger)LCSDKPort;
+        [Export("LCSDKPort")]
+        //[Verify(MethodToProperty)]
+        nint LCSDKPort { get; }
+
+        // -(void)initSDKOpenApi:(NSString * _Nonnull)lcToken;
+        [Export("initSDKOpenApi:")]
+        void InitSDKOpenApi(string lcToken);
+    }
+}
+
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/LCOpenSDKDynamic.a b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/LCOpenSDKDynamic.a
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/LCOpenSDKDynamic.a
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/LCOpenSDKDynamic.a
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/libLCSDKOnXamarin.a b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/libLCSDKOnXamarin.a
new file mode 100644
index 0000000..e32aae6
--- /dev/null
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Library/libLCSDKOnXamarin.a
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Properties/AssemblyInfo.cs b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Properties/AssemblyInfo.cs
similarity index 88%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Properties/AssemblyInfo.cs
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Properties/AssemblyInfo.cs
index 6cca32a..461e830 100644
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Properties/AssemblyInfo.cs
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Properties/AssemblyInfo.cs
@@ -12,11 +12,11 @@
 // Information about this assembly is defined by the following attributes.
 // Change them to the values specific to your project.
 
-[assembly: AssemblyTitle("Shared.IOS.ESVideoOnSDK")]
+[assembly: AssemblyTitle("Shared.IOS.LCVideoOnSDK")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Shared.IOS.ESVideoOnSDK")]
+[assembly: AssemblyProduct("Shared.IOS.LCVideoOnSDK")]
 [assembly: AssemblyCopyright("Copyright 漏  2021")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -25,7 +25,7 @@
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
 
-[assembly: AssemblyVersion("2.0.2")]
+[assembly: AssemblyVersion("1.0.1")]
 
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_answer.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_answer.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_answer.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_answer.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_back.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_back.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_back.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_back.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_hangup.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_hangup.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_hangup.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_hangup.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_select.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_takephoto_unselect.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_select.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png
similarity index 100%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Resources/ic_esvideo_on_unlock_unselect.png
Binary files differ
diff --git a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.csproj b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.csproj
similarity index 85%
rename from iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.csproj
rename to iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.csproj
index fbe4cdb..81108a4 100644
--- a/iOS/Xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.csproj
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK.csproj
@@ -4,12 +4,12 @@
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <ProjectTypeGuids>{8FFB629D-F513-41CE-95D2-7ECE97B6EEEC};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <ProjectGuid>{D1832CED-B861-4FE3-A3BD-3D582C108D3A}</ProjectGuid>
+    <ProjectGuid>{D78A9ED7-34A3-416F-B645-7475E2E2DE93}</ProjectGuid>
     <TemplateGuid>{b6f3ff35-79b2-4f25-a2fc-60a7cf61013b}</TemplateGuid>
     <OutputType>Library</OutputType>
-    <RootNamespace>Shared.IOS.ESVideoOnSDK</RootNamespace>
+    <RootNamespace>Shared.IOS.LCVideoOnSDK</RootNamespace>
     <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
-    <AssemblyName>Shared.IOS.ESVideoOnSDK</AssemblyName>
+    <AssemblyName>Shared.IOS.LCVideoOnSDK</AssemblyName>
     <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -47,22 +47,6 @@
     <ObjcBindingCoreSource Include="Structs.cs" />
   </ItemGroup>
   <ItemGroup>
-    <NativeReference Include="Library\libESVideoOnXamarin.a">
-      <Kind>Static</Kind>
-      <ForceLoad>True</ForceLoad>
-      <LinkerFlags>-dead_strip -Wl -lz -lbz2 -liconv.2.4.0 -ObjC</LinkerFlags>
-      <Frameworks>CoreAudio MediaPlayer AudioToolbox VideoToolbox OpenGLES MediaAccessibility CoreVideo AVFoundation CoreMedia</Frameworks>
-    </NativeReference>
-    <NativeReference Include="Library\ESVideoPhoneSDk.a">
-      <Kind>Static</Kind>
-      <SmartLink>False</SmartLink>
-    </NativeReference>
-    <NativeReference Include="Library\LCOpenSDKDynamic.a">
-      <Kind>Static</Kind>
-      <SmartLink>False</SmartLink>
-    </NativeReference>
-  </ItemGroup>
-  <ItemGroup>
     <BundleResource Include="Resources\ic_esvideo_on_answer.png" />
     <BundleResource Include="Resources\ic_esvideo_on_back.png" />
     <BundleResource Include="Resources\ic_esvideo_on_hangup.png" />
@@ -71,5 +55,17 @@
     <BundleResource Include="Resources\ic_esvideo_on_unlock_select.png" />
     <BundleResource Include="Resources\ic_esvideo_on_unlock_unselect.png" />
   </ItemGroup>
+  <ItemGroup>
+    <NativeReference Include="Library\libLCSDKOnXamarin.a">
+      <Kind>Static</Kind>
+      <ForceLoad>True</ForceLoad>
+      <Frameworks>CoreAudio MediaPlayer AudioToolbox VideoToolbox OpenGLES MediaAccessibility CoreVideo AVFoundation CoreMedia</Frameworks>
+      <LinkerFlags>-lz</LinkerFlags>
+    </NativeReference>
+    <NativeReference Include="Library\LCOpenSDKDynamic.a">
+      <Kind>Static</Kind>
+      <SmartLink>False</SmartLink>
+    </NativeReference>
+  </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Structs.cs b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Structs.cs
new file mode 100644
index 0000000..3a2a5d9
--- /dev/null
+++ b/iOS/Xamarin/Shared.IOS.LCVideoOnSDK/Shared.IOS.LCVideoOnSDK/Structs.cs
@@ -0,0 +1,6 @@
+锘縰sing System;
+
+namespace Shared.IOS.LCVideoOnSDK
+{
+}
+

--
Gitblit v1.8.0