From 8bfc1215384797f9b709ee06bc721d472182f15b Mon Sep 17 00:00:00 2001
From: Davin <591807572@qq.com>
Date: 星期三, 20 十一月 2024 15:11:44 +0800
Subject: [PATCH] feature 萤石摄像头翻转

---
 EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj                                   |    4 
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@3x.png                  |    0 
 EZSDK/EZSDK/EZ/Global/EZHttpUtil.h                                     |   18 ++
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.m                |  121 +++++++++++++++
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@3x.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a                                  |    0 
 EZSDK/EZSDK.xcodeproj/project.pbxproj                                  |    8 
 EZSDK/EZSDK/EZSDK.h                                                    |    7 
 EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings      |    3 
 EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs                                   |    9 
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@2x.png                 |    0 
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.h                |   23 ++
 EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a                                 |    0 
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@3x.png                 |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZSettingViewController.m             |   57 +++++++
 EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard                           |    4 
 EZDemo/HDLEZDemo/HDLEZDemo/resources/zh-Hans.lproj/Localizable.strings |    3 
 EZSDK.IOS/EZSDK.IOS/ApiDefinitions.cs                                  |  115 ++++++++++++++
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@2x.png                  |    0 
 EZSDK/EZSDK/EZ/Global/EZHttpUtil.m                                     |   71 ++++++++
 EZSDK/EZSDK/EZSDK.m                                                    |   10 +
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@2x.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m                               |    6 
 EZSDK/EZSDK/EZ/Global/GlobalKit.h                                      |    3 
 24 files changed, 448 insertions(+), 14 deletions(-)

diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m
index f75fbba..0d1a8c2 100644
--- a/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m
@@ -25,10 +25,10 @@
     // Override point for customization after application launch.
     [[EZSDK sharedInstance] initLibWithAppKey:@"1aa98a90489b4838b966b57018b4b04b" globalAppKey:@"1aa98a90489b4838b966b57018b4b04b"];
 //    [[EZSDK sharedInstance] initLibWithAppKey:@"941b1b72b6294998acfd36c14931b675" globalAppKey:@"941b1b72b6294998acfd36c14931b675"];
-    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI3ZWRmMWFkMTQzN2Y0NjI0YTQxMWRiMDRmODVjNTRiZSIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoiS2FlZGUiLCJ1c2VyRGF0YVJpZ2h0IjoiMSIsIm9wZW5BcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzNTAyODA5OTU5OTg4NjMzNjEiLCJleHAiOjE3MDU1NTQ5NjMsIm5iZiI6MTcwNTU0Nzc2M30.bkW07D2YnCMFw4MBvsDc0OqZJbB-w-NV9zVLJGyjBEU9ixp3TueFj76fPPUDn1XfMzigzXb74oPcFq9lIDkNkIBvSCM6YQttN9X4Y3O5JWcdMD5VQZBrxgLfzDdCjFZ2nwR5SlaixwEgYASFh_9jaBUqjyXyJ1pKFlCEwB2jVU0" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmNzA3OGQ0NTdlYmI0OWQ3YWJmZWIwMzZlNWYzMWQwMSIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzUwMjgwOTk1OTk4ODYzMzYxIiwiZXhwIjoxNzA2MTUyNTYzLCJuYmYiOjE3MDU1NDc3NjN9.j7QjPk7vtsESSUHLq9t7FBUpCxfb63rMihs3yGF4Bx38iEqzSTzRRrJuZdFQC_oyJeBqbzXR5Wp7NFLdwhAIu_MHVJFDcm_I7e9NFKtdqMKdVXy_XgB8xe5Nr8jny2XtYBN4XfIhvCXLj8_O9_l498_lZm0ucfJOfS58oiGTjxo"];
-    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1674604669353717761"];
+    [[EZSDK sharedInstance] setHDlAccessToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiIxODZlNWIxOTlhMzI0NzdhOTg0MTc1NWFiZDgwNjhiYSIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoi54eV5ZCbIiwidXNlckRhdGFSaWdodCI6IjEiLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxNjU2OTE3NDUxMjgxNTM0OTc3IiwiZXhwIjoxNzMwODkxMzczLCJuYmYiOjE3MzA4ODQxNzN9.TYaCAGVQ1c427INqyRLTM9hEpBpIdxm6mj6P2e4DlrvQ-jNjfP7sEphx3Bj7ZH7_lUIenwnCrO_crxIwgvzW3xjCv0D3qzeCbzbf5ynT0sYHIT2hWTJl4tdUYAK-BsEhf7Sfj9se0LzSmDEs2Sbmrm6BoUsViIbS8uVXOpZnPyU" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiIzYTQ2MDgxZDI4YWY0MjlmYmUzNTAxOWFlZTgwYmM5MCIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxNjU2OTE3NDUxMjgxNTM0OTc3IiwiZXhwIjoxNzMxNDg4OTczLCJuYmYiOjE3MzA4ODQxNzN9.RDohTRVczdpxb4Pj9kvbEwHd2AUbYK0jps2kQk-WiVUE1HePoq-HjoYdYTwOw9CLvMuIUdDTru4AwQNtYgT9gF5jJEb7ePXrA8tStNvTyxu5FHMxaPGXY74UGg2H29_N4PEctBjb5A7z4NwJ36RajXsNyJweFLpZxX6QKXtrsbY"];
+    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1719997413437546497"];
 //    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://nearest.hdlcontrol.com" platform:1 homeId:@"1546324800135176193"];
-    [[EZSDK sharedInstance] setEZAccessToken:@"ra.ag6fktccckc2gxl84mu40e1o417agh8u-231ke8chyz-0vkjf4x-nqw225sxi"];
+    [[EZSDK sharedInstance] setEZAccessToken:@"ra.cej51msz2lc9bd85dcjjh6lo3a1nvhd7-64dvf8rolg-1brlg88-nrsym3uwr"];
 //    [[EZSDK sharedInstance] setEZAccessToken:@"ra.3hkirwcadrpfmaa89wep99io3wto4yds-7zptb10d20-1wxg4f3-ygiojudee"];
 
     
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard b/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard
index 9e5e029..2223c6b 100644
--- a/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment version="4352" identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a b/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a
index 32b4855..6c21576 100644
--- a/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings
index 9c7767d..004ac0d 100644
--- a/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings
@@ -7,6 +7,9 @@
 "complete"="Completed";
 "push_slider_msg"="Handle the notification by yourself.";
 
+"api_mirror_flip"="Mirror flip";
+"api_mirror_flip_trip"="The video screen will flip, suitable for inversion scenes";
+"api_mirror_flip_success"="Mirror flip successful";
 "api_mirror_test"="Image Flipping API Test";
 "api_getting_device_list"="Getting the device list...";
 "api_get_device_list_fail"="Getting device list failed.";
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/resources/zh-Hans.lproj/Localizable.strings b/EZDemo/HDLEZDemo/HDLEZDemo/resources/zh-Hans.lproj/Localizable.strings
index c7ecd08..45dbf02 100644
--- a/EZDemo/HDLEZDemo/HDLEZDemo/resources/zh-Hans.lproj/Localizable.strings
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/resources/zh-Hans.lproj/Localizable.strings
@@ -7,6 +7,9 @@
 "complete"="瀹屾垚";
 "push_slider_msg"="浣犻渶鑷澶勭悊婊戝姩杩涘叆鐨勬帹閫佹秷鎭�";
 
+"api_mirror_flip"="鐢婚潰缈昏浆";
+"api_mirror_flip_trip"="鐐瑰嚮鍚庤棰戠敾闈細缈昏浆灞曠ず锛岄�傚悎鍊掕鐨勫満鏅�";
+"api_mirror_flip_success"="鐢婚潰缈昏浆鎴愬姛";
 "api_mirror_test"="闀滃儚缈昏浆鎺ュ彛娴嬭瘯";
 "api_getting_device_list"="姝e湪鑾峰彇鐢ㄦ埛璁惧鍒楄〃...";
 "api_get_device_list_fail"="璁惧鍒楄〃鑾峰彇澶辫触";
diff --git a/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs b/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
index 9219806..dd06179 100644
--- a/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
+++ b/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
@@ -47,8 +47,13 @@
 		[Export ("setHDlAccessToken:refreshToken:")]
 		void SetHDlAccessToken (string accessToken, string refreshToken);
 
-		// -(void)setRequestHttpsHostAndPlatform:(NSString *)requestHttpsHost platform:(int)platform homeId:(NSString *)homeId;
-		[Export ("setRequestHttpsHostAndPlatform:platform:homeId:")]
+
+        // -(void)configHDLServerAppKey:(NSString *)appKey appSecret:(NSString *)appSecret;
+        [Export("configHDLServerAppKey:appSecret:")]
+        void ConfigHDLServerAppKey(string appKey, string appSecret);
+
+        // -(void)setRequestHttpsHostAndPlatform:(NSString *)requestHttpsHost platform:(int)platform homeId:(NSString *)homeId;
+        [Export ("setRequestHttpsHostAndPlatform:platform:homeId:")]
 		void SetRequestHttpsHostAndPlatform (string requestHttpsHost, int platform, string homeId);
 
 		// -(void)go2EZvizMonitor;
diff --git a/EZSDK.IOS/EZSDK.IOS/ApiDefinitions.cs b/EZSDK.IOS/EZSDK.IOS/ApiDefinitions.cs
new file mode 100644
index 0000000..17ced84
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/ApiDefinitions.cs
@@ -0,0 +1,115 @@
+using Foundation;
+using ObjCRuntime;
+
+namespace EZSDK.IOS
+{
+	// @protocol EZSDKDelegate <NSObject>
+	[Protocol, Model (AutoGeneratedName = true)]
+	[BaseType (typeof(NSObject))]
+	interface EZSDKDelegate
+	{
+		// @required -(void)addDeviceSuccessed:(NSString *)deviceSerial;
+		[Abstract]
+		[Export ("addDeviceSuccessed:")]
+		void AddDeviceSuccessed (string deviceSerial);
+	}
+
+	// @interface EZSDK : NSObject
+	[BaseType (typeof(NSObject))]
+	interface EZSDK
+	{
+		[Wrap ("WeakDelegate")]
+		EZSDKDelegate Delegate { get; set; }
+
+		// @property (nonatomic, weak) id<EZSDKDelegate> delegate;
+		[NullAllowed, Export ("delegate", ArgumentSemantic.Weak)]
+		NSObject WeakDelegate { get; set; }
+
+		// @property (nonatomic, strong) NSArray * connectTipModels;
+		[Export ("connectTipModels", ArgumentSemantic.Strong)]
+		[Verify (StronglyTypedNSArray)]
+		NSObject[] ConnectTipModels { get; set; }
+
+		// +(instancetype)sharedInstance;
+		[Static]
+		[Export ("sharedInstance")]
+		EZSDK SharedInstance ();
+
+		// -(BOOL)initLibWithAppKey:(NSString *)appKey globalAppKey:(NSString *)globalAppKey;
+		[Export ("initLibWithAppKey:globalAppKey:")]
+		bool InitLibWithAppKey (string appKey, string globalAppKey);
+
+		// -(void)setEZAccessToken:(NSString *)accessToken;
+		[Export ("setEZAccessToken:")]
+		void SetEZAccessToken (string accessToken);
+
+		// -(void)setHDlAccessToken:(NSString *)accessToken refreshToken:(NSString *)refreshToken;
+		[Export ("setHDlAccessToken:refreshToken:")]
+		void SetHDlAccessToken (string accessToken, string refreshToken);
+
+		// -(void)configHDLServerAppKey:(NSString *)appKey appSecret:(NSString *)appSecret;
+		[Export ("configHDLServerAppKey:appSecret:")]
+		void ConfigHDLServerAppKey (string appKey, string appSecret);
+
+		// -(void)setRequestHttpsHostAndPlatform:(NSString *)requestHttpsHost platform:(int)platform homeId:(NSString *)homeId;
+		[Export ("setRequestHttpsHostAndPlatform:platform:homeId:")]
+		void SetRequestHttpsHostAndPlatform (string requestHttpsHost, int platform, string homeId);
+
+		// -(void)go2EZvizMonitor;
+		[Export ("go2EZvizMonitor")]
+		void Go2EZvizMonitor ();
+
+		// -(void)toEZDeviceListViewWithFilterTypes:(NSArray *)filterTepes;
+		[Export ("toEZDeviceListViewWithFilterTypes:")]
+		[Verify (StronglyTypedNSArray)]
+		void ToEZDeviceListViewWithFilterTypes (NSObject[] filterTepes);
+
+		// -(void)addEzvizMonitor;
+		[Export ("addEzvizMonitor")]
+		void AddEzvizMonitor ();
+
+		// -(void)addEzvizMonitorWithDeviceType:(NSString *)deviceType;
+		[Export ("addEzvizMonitorWithDeviceType:")]
+		void AddEzvizMonitorWithDeviceType (string deviceType);
+
+		// -(void)Play:(id)deviceInfo;
+		[Export ("Play:")]
+		void Play (NSObject deviceInfo);
+
+		// -(void)Play:(id)deviceInfo messageId:(NSString *)msgId showCallout:(BOOL)isShow;
+		[Export ("Play:messageId:showCallout:")]
+		void Play (NSObject deviceInfo, string msgId, bool isShow);
+
+		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial;
+		[Export ("PlayWithDeviceSerial:")]
+		void PlayWithDeviceSerial (string deviceSerial);
+
+		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial msgId:(NSString *)msgId;
+		[Export ("PlayWithDeviceSerial:msgId:")]
+		void PlayWithDeviceSerial (string deviceSerial, string msgId);
+
+		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString *)deviceId deviceType:(NSString *)deviceType;
+		[Export ("PlayWithDeviceSerial:deviceId:deviceType:")]
+		void PlayWithDeviceSerial (string deviceSerial, string deviceId, string deviceType);
+
+		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString *)deviceId deviceType:(NSString *)deviceType msgId:(NSString *)msgId;
+		[Export ("PlayWithDeviceSerial:deviceId:deviceType:msgId:")]
+		void PlayWithDeviceSerial (string deviceSerial, string deviceId, string deviceType, string msgId);
+
+		// -(void)setting:(id)deviceInfo;
+		[Export ("setting:")]
+		void Setting (NSObject deviceInfo);
+
+		// -(void)playBackVideo:(id)deviceInfo;
+		[Export ("playBackVideo:")]
+		void PlayBackVideo (NSObject deviceInfo);
+
+		// -(void)toTemPassView:(NSString *)deviceId;
+		[Export ("toTemPassView:")]
+		void ToTemPassView (string deviceId);
+
+		// -(void)toDeviceMsgListView:(NSString *)deviceId;
+		[Export ("toDeviceMsgListView:")]
+		void ToDeviceMsgListView (string deviceId);
+	}
+}
diff --git a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
index 19b041b..c9c2243 100644
--- a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
+++ b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
@@ -108,6 +108,10 @@
     <BundleResource Include="Resources\hdl_ez_cat_eyes_answer%403x.png" />
     <BundleResource Include="Resources\hdl_ez_msg_placeholder%402x.png" />
     <BundleResource Include="Resources\hdl_ez_msg_placeholder%403x.png" />
+    <BundleResource Include="Resources\hdl_ez_msg_no_answer%403x.png" />
+    <BundleResource Include="Resources\hdl_ez_msg_no_answer%402x.png" />
+    <BundleResource Include="Resources\hdl_ez_msg_answer%403x.png" />
+    <BundleResource Include="Resources\hdl_ez_msg_answer%402x.png" />
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
index 726930b..5a8da80 100644
--- a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
+++ b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@2x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@2x.png
index b2b29ec..0751cd0 100644
--- a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@2x.png
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@2x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@3x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@3x.png
index fac62dd..591dc92 100644
--- a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@3x.png
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_list_next@3x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@2x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@2x.png
new file mode 100644
index 0000000..554a2f7
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@2x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@3x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@3x.png
new file mode 100644
index 0000000..9ff9ac7
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_answer@3x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@2x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@2x.png
new file mode 100644
index 0000000..e4b3f24
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@2x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@3x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@3x.png
new file mode 100644
index 0000000..f8c5716
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_msg_no_answer@3x.png
Binary files differ
diff --git a/EZSDK/EZSDK.xcodeproj/project.pbxproj b/EZSDK/EZSDK.xcodeproj/project.pbxproj
index 4933116..aa143ad 100644
--- a/EZSDK/EZSDK.xcodeproj/project.pbxproj
+++ b/EZSDK/EZSDK.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
 	archiveVersion = 1;
 	classes = {
 	};
-	objectVersion = 52;
+	objectVersion = 54;
 	objects = {
 
 /* Begin PBXBuildFile section */
@@ -15,6 +15,7 @@
 		83879A8B2A7DE7FC00E10A81 /* HDLEZDetectionTypeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 83879A8A2A7DE7FC00E10A81 /* HDLEZDetectionTypeCell.m */; };
 		83879A8E2A7DEEC500E10A81 /* HDLEZDetectionTypeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83879A8D2A7DEEC500E10A81 /* HDLEZDetectionTypeModel.m */; };
 		83D69FFA2A47D32A00871258 /* HDLEZVideoQualityBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83D69FF92A47D32A00871258 /* HDLEZVideoQualityBoxView.m */; };
+		83DC3D952CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83DC3D942CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.m */; };
 		83EE503D2A41C9BA0006435D /* HDLEZOPButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 83EE503C2A41C9BA0006435D /* HDLEZOPButton.m */; };
 		AE31FE1F29CC2D2200678568 /* EZOpenSDKFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE31FE1E29CC2D2200678568 /* EZOpenSDKFramework.framework */; platformFilter = ios; };
 		AE5068D829B9DB5E009EA09A /* HDLEZTemInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AE5068D729B9DB5E009EA09A /* HDLEZTemInfoModel.m */; };
@@ -209,6 +210,8 @@
 		83879A8D2A7DEEC500E10A81 /* HDLEZDetectionTypeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDetectionTypeModel.m; sourceTree = "<group>"; };
 		83D69FF82A47D32A00871258 /* HDLEZVideoQualityBoxView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZVideoQualityBoxView.h; sourceTree = "<group>"; };
 		83D69FF92A47D32A00871258 /* HDLEZVideoQualityBoxView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZVideoQualityBoxView.m; sourceTree = "<group>"; };
+		83DC3D932CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZMirrorFlipView.h; sourceTree = "<group>"; };
+		83DC3D942CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZMirrorFlipView.m; sourceTree = "<group>"; };
 		83EE503B2A41C9BA0006435D /* HDLEZOPButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZOPButton.h; sourceTree = "<group>"; };
 		83EE503C2A41C9BA0006435D /* HDLEZOPButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZOPButton.m; sourceTree = "<group>"; };
 		AE31FE1E29CC2D2200678568 /* EZOpenSDKFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = EZOpenSDKFramework.framework; sourceTree = "<group>"; };
@@ -709,6 +712,8 @@
 				83879A872A7DE49900E10A81 /* HDLEZDetectionTypeView.m */,
 				83879A892A7DE7FC00E10A81 /* HDLEZDetectionTypeCell.h */,
 				83879A8A2A7DE7FC00E10A81 /* HDLEZDetectionTypeCell.m */,
+				83DC3D932CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.h */,
+				83DC3D942CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.m */,
 			);
 			path = Views;
 			sourceTree = "<group>";
@@ -1514,6 +1519,7 @@
 				B9BC9A2325C0FFBD00C024FE /* EZMessageListViewController.m in Sources */,
 				B9BC99B725C0FFBD00C024FE /* MWZoomingScrollView.m in Sources */,
 				B9EA4E8A25C7E806000FFDA2 /* MJRefreshBackGifFooter.m in Sources */,
+				83DC3D952CDB5AEB00F9DDF7 /* HDLEZMirrorFlipView.m in Sources */,
 				B9BC99B625C0FFBD00C024FE /* MWCaptionView.m in Sources */,
 				83879A852A7DE42900E10A81 /* HDLEZDetectionTypeViewController.m in Sources */,
 				B9BC9A0B25C0FFBD00C024FE /* EZDeviceUpgradeViewController.m in Sources */,
diff --git a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
index ad0c84e..be555ef 100644
--- a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
+++ b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
@@ -189,6 +189,24 @@
                      code:(NSString *)code
                    completion:(void (^)(ResponseData *responseData))completion;
 
+/**
+ *  @since 鑾峰彇璁惧鑳藉姏闆�
+ *  @param deviceSerial   璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ */
+- (void)getDeviceCapacity:(NSString *)deviceSerial
+               completion:(void (^)(ResponseData *responseData))completion;
+
+/**
+ *  @since 璁剧疆璁惧浜戝彴闀滃儚
+ *  @param deviceSerial   璁惧搴忓垪鍙�
+ *  @param command  鍛戒护 0-涓婁笅锛�1-宸﹀彸锛�2-涓績
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ */
+- (void)setPtzMiroor:(NSString *)deviceSerial
+             command:(NSString *)command
+          completion:(void (^)(ResponseData *responseData))completion;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
index 94b201a..bf072a1 100644
--- a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
+++ b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
@@ -35,10 +35,12 @@
 #define AOI_POST_EZ_UpdateAnswerStatus @"/home-wisdom/platform/yingshi/lock/updateAnswerStatus" // 鏇存敼闂ㄩ搩閫氳瘽鐘舵��(鎺ュ惉鍜屾湭鎺�)
 #define API_POST_EZ_GetAiSupportList @"/home-wisdom/platform/yingshi/getAiSupportList"//鑾峰彇鎽勫儚澶存櫤鑳界畻娉曞垪琛ㄥ拰鐘舵��
 #define API_POST_EZ_SetAiSupport @"/home-wisdom/platform/yingshi/setAiSupport"//璁剧疆鎽勫儚澶存櫤鑳界畻娉�
+#define API_POST_EZ_GetDeviceCapacity @"/home-wisdom/platform/yingshi/getDeviceCapacity"//鑾峰彇璁惧鑳藉姏闆�(鑾峰彇鎽勫儚澶村弽杞兘鍔�)
+#define API_POST_EZ_SetPtzMiroor @"/home-wisdom/platform/yingshi/setPtzMiroor"//璁剧疆璁惧浜戝彴闀滃儚(璁剧疆鎽勫儚澶村弽杞兘鍔�)
 
 #pragma mark APP_KEY
-#define APP_KEY @"QWERREWQ"
-#define SECRET_KEY @"CPBUCTRLCPBUABCD"
+#define APP_KEY @"HDL-HOME-APP-TEST"
+#define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
 
 
 #define TIME_OUT 30.0f
@@ -556,6 +558,57 @@
     }];
 }
 
+/**
+ *  @since 鑾峰彇璁惧鑳藉姏闆�
+ *  @param deviceSerial   璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ */
+- (void)getDeviceCapacity:(NSString *)deviceSerial
+                  completion:(void (^)(ResponseData *responseData))completion {
+    //璁剧疆璇锋眰鍙傛暟
+    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
+    [parameters setValue:@(1) forKey:@"platform"];
+    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
+    
+    parameters = [self GetSignRequestDictionary:parameters];
+    
+    NSLog(@"鑾峰彇璁惧鑳藉姏闆嗗弬鏁帮細%@",parameters);
+    
+    [self requestHttpsPost:API_POST_EZ_GetDeviceCapacity parameters:parameters completion:^(ResponseData *responseData) {
+        if (completion) {
+            completion (responseData);
+        }
+    }];
+}
+
+/**
+ *  @since 璁剧疆璁惧浜戝彴闀滃儚
+ *  @param deviceSerial   璁惧搴忓垪鍙�
+ *  @param command  鍛戒护 0-涓婁笅锛�1-宸﹀彸锛�2-涓績
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ */
+- (void)setPtzMiroor:(NSString *)deviceSerial
+             command:(NSString *)command
+                  completion:(void (^)(ResponseData *responseData))completion {
+    //璁剧疆璇锋眰鍙傛暟
+    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
+    [parameters setValue:@(1) forKey:@"platform"];
+    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
+    [parameters setValue:command forKey:@"command"];
+
+    parameters = [self GetSignRequestDictionary:parameters];
+    
+    NSLog(@"璁剧疆璁惧浜戝彴闀滃儚鍙傛暟锛�%@",parameters);
+    
+    [self requestHttpsPost:API_POST_EZ_SetPtzMiroor parameters:parameters completion:^(ResponseData *responseData) {
+        if (completion) {
+            completion (responseData);
+        }
+    }];
+}
+
 
 /// 鍒锋柊token
 /// @param block 缁撴灉
@@ -683,9 +736,17 @@
         params =[NSMutableDictionary dictionary];
     }
     UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
-    [params setValue:APP_KEY forKey:@"appKey"];
+    NSString *hdlServerAppKey = [GlobalKit shareKit].hdlServerAppKey;
+    if (!hdlServerAppKey || hdlServerAppKey.length == 0) {
+        hdlServerAppKey = APP_KEY;
+    }
+    NSString *hdlServerAppSecret = [GlobalKit shareKit].hdlServerAppSecret;
+    if (!hdlServerAppSecret || hdlServerAppSecret.length == 0) {
+        hdlServerAppSecret = SECRET_KEY;
+    }
+    [params setValue:hdlServerAppKey forKey:@"appKey"];
     [params setValue:[NSString stringWithFormat:@"%llu",recordTime] forKey:@"timestamp"];
-    NSLog(@"##########APPKEY:%@, SECRET_KEY:%@", APP_KEY, SECRET_KEY);
+    NSLog(@"##########APPKEY:%@, SECRETKEY:%@", hdlServerAppKey, hdlServerAppSecret);
     //1.瀵筀EY鍗囧簭
     NSArray *keyArray = [params allKeys];
     NSArray *sortKeyArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
@@ -705,7 +766,7 @@
     }
     //2.3 鎷兼帴SECRET_KEY
     newString = [newString substringToIndex:[newString length] - 1];
-    newString = [newString stringByAppendingString: SECRET_KEY];
+    newString = [newString stringByAppendingString: hdlServerAppSecret];
     //2.4 MD5杞崲+杞皬鍐�
     if([self stringIsNullOrEmpty:newString]){
         newString = @"";
diff --git a/EZSDK/EZSDK/EZ/Global/GlobalKit.h b/EZSDK/EZSDK/EZ/Global/GlobalKit.h
index 22e13c7..444aaab 100644
--- a/EZSDK/EZSDK/EZ/Global/GlobalKit.h
+++ b/EZSDK/EZSDK/EZ/Global/GlobalKit.h
@@ -25,6 +25,9 @@
 @property (nonatomic, copy) NSString *hdlHomeId;
 @property (nonatomic, copy) NSString *hdlAppKey;
 
+@property (nonatomic, copy) NSString *hdlServerAppKey;
+@property (nonatomic, copy) NSString *hdlServerAppSecret;
+
 @property (nonatomic, copy) NSString *accessToken;
 @property (nonatomic, copy) NSString *deviceSerialNo;  //璁惧搴忓垪鍙�
 @property (nonatomic, copy) NSString *deviceModel;     //璁惧绫诲瀷瀛楃涓�
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.h b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.h
new file mode 100644
index 0000000..8807409
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.h
@@ -0,0 +1,23 @@
+//
+//  HDLEZMirrorFlipView.h
+//  EZSDK
+//
+//  Created by Davin on 2024/11/6.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZMirrorFlipView : UIView
+
+/// 閰嶇疆闀滃儚缈昏浆淇℃伅
+/// - Parameters:
+///   - title: 鏍囬
+///   - subTitle: 瀛愭爣棰�
+///   - clickResult: 鐐瑰嚮鍥炶皟
+- (void)configTitle:(NSString *)title subTitle:(NSString *)subTitle click:(void(^)(void))clickResult;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.m b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.m
new file mode 100644
index 0000000..d7f9a1f
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZMirrorFlipView.m
@@ -0,0 +1,121 @@
+//
+//  HDLEZMirrorFlipView.m
+//  EZSDK
+//
+//  Created by Davin on 2024/11/6.
+//
+
+#import "HDLEZMirrorFlipView.h"
+
+@interface HDLEZMirrorFlipView ()
+
+@property (nonatomic, strong) UIView *baseView;
+@property (nonatomic, strong) UILabel *titleLabel;
+@property (nonatomic, strong) UIImageView *rightIcon;
+@property (nonatomic, strong) UILabel *subTitleLabel;
+
+@property (nonatomic, copy) void(^clickBlock)(void);
+
+@end
+
+@implementation HDLEZMirrorFlipView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    if (self = [super initWithFrame:frame]) {
+        [self createSubviews];
+    }
+    return self;
+}
+
+- (void)createSubviews {
+    self.backgroundColor = [UIColor clearColor];
+    [self addSubview:self.baseView];
+    [self addSubview:self.titleLabel];
+    [self addSubview:self.rightIcon];
+    [self addSubview:self.subTitleLabel];
+    
+    [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.mas_top);
+        make.left.mas_equalTo(self.mas_left);
+        make.right.mas_equalTo(self.mas_right);
+        make.height.mas_equalTo(50.);
+    }];
+    
+    [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.baseView.mas_left).offset(16.);
+        make.centerY.mas_equalTo(self.baseView.mas_centerY);
+    }];
+    
+    [self.rightIcon mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(self.mas_right).offset(-16.);
+        make.centerY.mas_equalTo(self.baseView.mas_centerY);
+        make.width.mas_equalTo(16);
+        make.height.mas_equalTo(16);
+    }];
+    
+    [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.baseView.mas_bottom);
+        make.left.mas_equalTo(self.titleLabel.mas_left);
+        make.height.mas_equalTo(50.);
+    }];
+    
+    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(mirrorFlipAction)];
+    [self.baseView addGestureRecognizer:tapGesture];
+}
+
+#pragma mark - PublishMethod
+/// 閰嶇疆闀滃儚缈昏浆淇℃伅
+/// - Parameters:
+///   - title: 鏍囬
+///   - subTitle: 瀛愭爣棰�
+///   - clickResult: 鐐瑰嚮鍥炶皟
+- (void)configTitle:(NSString *)title subTitle:(NSString *)subTitle click:(void(^)(void))clickResult {
+    self.titleLabel.text = title;
+    self.subTitleLabel.text = subTitle;
+    self.clickBlock = clickResult;
+}
+
+#pragma mark - PrivateMethod
+- (void)mirrorFlipAction {
+    if (self.clickBlock) {
+        self.clickBlock();
+    }
+}
+
+#pragma mark - Getter
+- (UIView *)baseView {
+    if (!_baseView) {
+        _baseView = [[UIView alloc] init];
+        _baseView.backgroundColor = HDLEZ_COLOR_VIEW_FOREGROUND;
+    }
+    return _baseView;
+}
+
+- (UILabel *)titleLabel {
+    if (!_titleLabel) {
+        _titleLabel=[[UILabel alloc] init];
+        _titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_16);
+        _titleLabel.textColor=HDLEZHEXCOLOR(0x1B2D4D, 1.0);;
+    }
+    return _titleLabel;
+}
+
+- (UIImageView *)rightIcon {
+    if (!_rightIcon) {
+        _rightIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hdl_ez_list_next"]];
+        _rightIcon.contentMode = UIViewContentModeScaleAspectFill;
+        _rightIcon.backgroundColor = UIColor.clearColor;
+    }
+    return _rightIcon;
+}
+
+- (UILabel *)subTitleLabel {
+    if (!_subTitleLabel) {
+        _subTitleLabel=[[UILabel alloc] init];
+        _subTitleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
+        _subTitleLabel.textColor=HDLEZ_COLOR_TEXT_GRAY;
+    }
+    return _subTitleLabel;
+}
+
+@end
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZSettingViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZSettingViewController.m
index b904e77..fd80138 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZSettingViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZSettingViewController.m
@@ -18,6 +18,7 @@
 #import <EZOpenSDKFramework/EZStorageInfo.h>
 #import "Toast+UIView.h"
 #import "HDLEZDetectionTypeViewController.h"
+#import "HDLEZMirrorFlipView.h"
 
 //#import "EzvizDeviceManager.h"
 
@@ -35,12 +36,14 @@
 @property (nonatomic, weak) IBOutlet UILabel *currentVersionLabel;
 @property (nonatomic, weak) IBOutlet UILabel *nVersionLabel;
 @property (nonatomic, weak) IBOutlet UIImageView *updateImageView;
+@property (nonatomic, strong) HDLEZMirrorFlipView *mirrorFlipView;
 @property (nonatomic, strong) UIButton *deleteButton;
 @property (nonatomic, strong) UIButton *privacyMaskButton;  // 闅愮閬斀鎵ц杩囩▼鎻愰啋鎸夐挳
 @property (nonatomic, strong) EZDeviceVersion *deviceVersion;
 @property (nonatomic, strong) NSTimer *timer;
 @property (nonatomic, assign) BOOL isCatEye;    // 鏄惁涓虹尗鐪�
 @property (nonatomic, assign) BOOL privacyMasking;    // 闅愮閬斀璁剧疆涓�
+@property (nonatomic, copy) NSString *mirrorFlipCommand;  // 闀滃儚缈昏浆鍛戒护
 
 @end
 
@@ -116,6 +119,26 @@
             weakSelf.nVersionLabel.text = version.currentVersion;
         }
     }];
+    [[EZHttpUtil sharedManager] getDeviceCapacity:self.deviceInfo.deviceSerial completion:^(ResponseData * _Nonnull responseData) {
+        NSLog(@"#######闀滃儚缈昏浆鍊艰繑鍥炵粨鏋滐細%@", [responseData yy_modelToJSONString]);
+        if (responseData.success && responseData.data) {
+            NSLog(@"#######闀滃儚缈昏浆鍊间负锛�%@", responseData.data);
+            BOOL ptzCenterMirror = [[responseData.data objectForKey:@"ptzCenterMirror"] boolValue];
+            BOOL ptzLeftRightMirror = [[responseData.data objectForKey:@"ptzLeftRightMirror"] boolValue];
+            BOOL ptzTopBottomMirror = [[responseData.data objectForKey:@"ptzTopBottomMirror"] boolValue];
+            if (ptzTopBottomMirror) {
+                weakSelf.mirrorFlipCommand = @"0";
+            }
+            if (ptzLeftRightMirror) {
+                weakSelf.mirrorFlipCommand = @"1";
+            }
+            if (ptzCenterMirror) {
+                weakSelf.mirrorFlipCommand = @"2";
+            }
+            [weakSelf.tableView reloadData];
+        }
+    }];
+    
     [self.privacyMaskSwitch setOn:NO];
     [self getPrivacyMaskSwitchStatus];
     self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
@@ -282,6 +305,13 @@
             cell.backgroundColor = [UIColor clearColor];
             cell.contentView.backgroundColor = [UIColor clearColor];
             cell.textLabel.text = @"";
+            if (self.mirrorFlipCommand && self.mirrorFlipCommand.length > 0) {
+                [cell.contentView addSubview:self.mirrorFlipView];
+                __weak __typeof(self)weakSelf = self;
+                [self.mirrorFlipView configTitle:NSLocalizedString(@"api_mirror_flip", @"鐢婚潰缈昏浆") subTitle:NSLocalizedString(@"api_mirror_flip_trip", @"鐐瑰嚮鍚庤棰戠敾闈細缈昏浆灞曠ず锛岄�傚悎鍊掕鐨勫満鏅�") click:^{
+                    [weakSelf mirrorFlipAction];
+                }];
+            }
             [cell.contentView addSubview:self.deleteButton];
             [self.deleteButton addTarget:self action:@selector(deleteAction) forControlEvents:UIControlEventTouchUpInside];
             [self.deleteButton mas_remakeConstraints:^(MASConstraintMaker *make) {
@@ -315,6 +345,13 @@
         cell.backgroundColor = [UIColor clearColor];
         cell.contentView.backgroundColor = [UIColor clearColor];
         cell.textLabel.text = @"";
+        if (self.mirrorFlipCommand && self.mirrorFlipCommand.length > 0) {
+            [cell.contentView addSubview:self.mirrorFlipView];
+            __weak __typeof(self)weakSelf = self;
+            [self.mirrorFlipView configTitle:NSLocalizedString(@"api_mirror_flip", @"鐢婚潰缈昏浆") subTitle:NSLocalizedString(@"api_mirror_flip_trip", @"鐐瑰嚮鍚庤棰戠敾闈細缈昏浆灞曠ず锛岄�傚悎鍊掕鐨勫満鏅�") click:^{
+                [weakSelf mirrorFlipAction];
+            }];
+        }
         [cell.contentView addSubview:self.deleteButton];
         [self.deleteButton addTarget:self action:@selector(deleteAction) forControlEvents:UIControlEventTouchUpInside];
         [self.deleteButton mas_remakeConstraints:^(MASConstraintMaker *make) {
@@ -387,7 +424,7 @@
 }
 
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-    return ((!self.isCatEye && indexPath.section == 8) || (self.isCatEye && indexPath.section == 6)) ? 92 : 50.;
+    return ((!self.isCatEye && indexPath.section == 8) || (self.isCatEye && indexPath.section == 6)) ? (self.mirrorFlipCommand && self.mirrorFlipCommand.length > 0 ? 192 : 92) : 50.;
 }
 
 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
@@ -746,6 +783,17 @@
     [self presentViewController:actionSheet animated:YES completion:nil];
 }
 
+- (void)mirrorFlipAction {
+    [[EZHttpUtil sharedManager] setPtzMiroor:self.deviceInfo.deviceSerial command:self.mirrorFlipCommand completion:^(ResponseData * _Nonnull responseData) {
+        NSLog(@"#######璁剧疆闀滃儚缈昏浆鍊艰繑鍥炵粨鏋滐細%@", [responseData yy_modelToJSONString]);
+        if (responseData.success) {
+            [UIView dd_showMessage:NSLocalizedString(@"api_mirror_flip_success", @"鐢婚潰缈昏浆鎴愬姛")];
+        } else {
+            [UIView dd_showMessage:responseData.message];
+        }
+    }];
+}
+
 #pragma mark - Getter
 - (UIButton *)deleteButton {
     if (!_deleteButton) {
@@ -778,4 +826,11 @@
     return _actionRightArrow;
 }
 
+- (HDLEZMirrorFlipView *)mirrorFlipView {
+    if (!_mirrorFlipView) {
+        _mirrorFlipView = [[HDLEZMirrorFlipView alloc] initWithFrame:CGRectMake(0, 0, HDLEZ_APP_SCREEN_WIDTH, 100)];
+    }
+    return _mirrorFlipView;
+}
+
 @end
diff --git a/EZSDK/EZSDK/EZSDK.h b/EZSDK/EZSDK/EZSDK.h
index e4a89c4..2dff88e 100644
--- a/EZSDK/EZSDK/EZSDK.h
+++ b/EZSDK/EZSDK/EZSDK.h
@@ -43,6 +43,13 @@
  璁剧疆HDLSDK鐨刟ccessToken
  */
 - (void)setHDlAccessToken:(NSString *)accessToken refreshToken:(NSString *) refreshToken;
+
+/**
+ 閰嶇疆骞冲彴appkey鍜宎ppSecret
+ 浼犲叆appKey鍜宎ppSecret
+ */
+- (void)configHDLServerAppKey:(NSString *)appKey appSecret:(NSString *)appSecret;
+
 /**
  璁剧疆SDK鐨勬渤涓滄帴鍙g殑requestHttpsHost鍜屽钩鍙� 鏍囪瘑锛�1.on+(榛樿) 2.evoyo
  */
diff --git a/EZSDK/EZSDK/EZSDK.m b/EZSDK/EZSDK/EZSDK.m
index b9b1725..7157818 100644
--- a/EZSDK/EZSDK/EZSDK.m
+++ b/EZSDK/EZSDK/EZSDK.m
@@ -84,6 +84,16 @@
     [[GlobalKit shareKit] setHdlAccessToken:accessToken];
     [[GlobalKit shareKit] setHdlRefreshToken:refreshToken];
 }
+
+/**
+ 閰嶇疆骞冲彴appkey鍜宎ppSecret
+ 浼犲叆appKey鍜宎ppSecret
+ */
+- (void)configHDLServerAppKey:(NSString *)appKey appSecret:(NSString *)appSecret {
+    [[GlobalKit shareKit] setHdlServerAppKey:appKey];
+    [[GlobalKit shareKit] setHdlServerAppSecret:appSecret];
+}
+
 /**
  璁剧疆SDK鐨勬渤涓滄帴鍙g殑requestHttpsHost鍜屽钩鍙� 鏍囪瘑锛�1.on+(榛樿) 2.evoyo
  */

--
Gitblit v1.8.0