From dbf79099f47d5f06223edfd5b8dc06c51b1830aa Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 15 十二月 2020 09:10:39 +0800
Subject: [PATCH] Merge branch 'CJL' into NewFilePath

---
 HDL-ON_iOS/Resources/zh-Hans.lproj/InfoPlist.strings                           |    6 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs        |   19 -
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs          |   77 +++--
 HDL-ON_Android/Assets/Language.ini                                             |   18 +
 HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png  |    0 
 DLL/Shared.IOS.TBL.dll                                                         |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png |    0 
 HDL_ON/UI/UI0-Public/AppUnlockPage.cs                                          |  228 ++++++++++++--
 HDL_ON/DAL/Server/IMessageCommon.cs                                            |   58 +++
 HDL-ON_Android/HDL-ON_Android.csproj                                           |    6 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs     |    5 
 DLL/Shared.IOS.dll                                                             |    0 
 HDL-ON_iOS/Info.plist                                                          |   14 
 HDL-ON_iOS/Resources/Language.ini                                              |   20 +
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png   |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs       |  283 +++++++++++++-----
 HDL_ON/Common/HDLCommon.cs                                                     |    2 
 HDL_ON/Common/R.cs                                                             |   79 +++++
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png  |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs           |   53 ++-
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs          |    4 
 21 files changed, 659 insertions(+), 213 deletions(-)

diff --git a/DLL/Shared.IOS.TBL.dll b/DLL/Shared.IOS.TBL.dll
index d96cc12..b66ef5a 100644
--- a/DLL/Shared.IOS.TBL.dll
+++ b/DLL/Shared.IOS.TBL.dll
Binary files differ
diff --git a/DLL/Shared.IOS.dll b/DLL/Shared.IOS.dll
index 1575ccf..c738f20 100644
--- a/DLL/Shared.IOS.dll
+++ b/DLL/Shared.IOS.dll
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index a38b640..0c80cdd 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -566,6 +566,7 @@
 9047=鎮ㄧ殑瀵嗙爜宸茬粡淇敼鐢熸晥锛岃閲嶆柊鐧诲綍
 9048=浣跨敤璐﹀彿瀵嗙爜鐧诲綍
 9049=瀵嗙爜杩炵画杈撻敊娆℃暟宸茶揪鍒�10娆�,鐢ㄦ埛宸茶閿佸畾,璇锋鏃�0鐐瑰悗鍐嶇櫥闄�
+9050=楠岃瘉闈㈠ID
 
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
@@ -584,3 +585,20 @@
 10014=褰撳墠浣忓畢涓嶅睘浜庤璐﹀彿
 10015=浣忓畢鍚嶇О宸插瓨鍦�
 10016=浣忓畢涓嶅瓨鍦�
+10017=璇锋眰澶辫触锛屽弬鏁板紓甯革紒
+10018=缁戝畾鍙风爜閲嶅
+10019=璇峰厛缁戝畾缃戝叧
+10020=缃戝叧涓嶅瓨鍦�
+10021=缃戝叧绂荤嚎
+10022=璁惧绂荤嚎
+10023=鎺у埗澶辫触
+10024=鍦烘櫙宸茬粡瀛樺湪
+10025=鑷姩鍖栧凡缁忓瓨鍦�
+10026=spk涓嶆敮鎸佽鍔熻兘
+10027=spk鍔熻兘涓嶆敮鎸佹鍔熻兘鍊�
+10028=娌℃湁鏉冮檺
+10029=璁惧鐩爣閲嶅
+10030=娌℃湁杩滅▼鎺у埗鏉冮檺
+10031=璁惧涓嶈兘涓虹┖
+10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
+10033=璁惧涓嶅瓨鍦�
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png
new file mode 100644
index 0000000..31c189d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png
new file mode 100644
index 0000000..87957ba
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 6bc3b66..09d4aa1 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -651,10 +651,8 @@
     <AndroidAsset Include="Assets\Phone\LogicIcon\selectTheFun.png" />
     <AndroidAsset Include="Assets\Phone\LogicIcon\selectTheScene.png" />
     <AndroidAsset Include="Assets\Phone\LogicIcon\selectTheTime.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\ColorWheelGray.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\ColorWheelTip.png" />
-    <AndroidAsset Include="Assets\Phone\oRobot.png" />
-    <AndroidAsset Include="Assets\Phone\RoomListBg.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AppUnlockSetting\FaceIdIconBig.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AppUnlockSetting\FingerIconBlue.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index ddbfaed..9c75308 100755
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -58,9 +58,9 @@
 	<key>UIRequiresFullScreen</key>
 	<true/>
 	<key>NSCameraUsageDescription</key>
-	<string>璁剧疆鎴块棿鎴栬�呭満鏅殑鑳屾櫙鍥剧墖</string>
+	<string>App wants to access your camera to set the background picture of the room</string>
 	<key>NSPhotoLibraryUsageDescription</key>
-	<string>璁剧疆鎴块棿鎴栬�呭満鏅殑鑳屾櫙鍥剧墖</string>
+	<string>App wants to access your photo library to set the background image of the room</string>
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
@@ -100,11 +100,11 @@
 	<key>CFBundleVersion</key>
 	<string>202009282</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
-	<string>鑾峰彇澶╂皵棰勬姤</string>
+	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
-	<string>闇�瑕佽闂偍鐨勯煶涔愬簱浠ヨ繛鎺ュ埌澶栭儴鎾斁鍣ㄦ挱鏀鹃煶涔愩��</string>
+	<string>App needs to access your music library to connect to an external player to play music.</string>
 	<key>NSLocationAlwaysUsageDescription </key>
-	<string>鑾峰彇澶╂皵棰勬姤</string>
+	<string>Use geographic location to provide services such as weather</string>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
 		<string>weixinULAPI</string>
@@ -113,11 +113,11 @@
 		<string>AispeechMobile</string>
 		<string>qqmusic</string>
 	</array>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>zh_CN</string>
 	<key>UIBackgroundModes</key>
 	<array>
 		<string>remote-notification</string>
 	</array>
+	<key>NSFaceIDUsageDescription</key>
+	<string>Need to use Face ID for unlock verification</string>
 </dict>
 </plist>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 821af88..c2ed74d 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -566,6 +566,7 @@
 9047=鎮ㄧ殑瀵嗙爜宸茬粡淇敼鐢熸晥锛岃閲嶆柊鐧诲綍
 9048=浣跨敤璐﹀彿瀵嗙爜鐧诲綍
 9049=瀵嗙爜杩炵画杈撻敊娆℃暟宸茶揪鍒�10娆�,鐢ㄦ埛宸茶閿佸畾,璇锋鏃�0鐐瑰悗鍐嶇櫥闄�
+9050=楠岃瘉闈㈠ID
 
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
@@ -583,4 +584,21 @@
 10013=涓嶈兘鎶婅嚜宸辨坊鍔犱负鎴愬憳
 10014=褰撳墠浣忓畢涓嶅睘浜庤璐﹀彿
 10015=浣忓畢鍚嶇О宸插瓨鍦�
-10016=浣忓畢涓嶅瓨鍦�
\ No newline at end of file
+10016=浣忓畢涓嶅瓨鍦�
+10017=璇锋眰澶辫触锛屽弬鏁板紓甯革紒
+10018=缁戝畾鍙风爜閲嶅
+10019=璇峰厛缁戝畾缃戝叧
+10020=缃戝叧涓嶅瓨鍦�
+10021=缃戝叧绂荤嚎
+10022=璁惧绂荤嚎
+10023=鎺у埗澶辫触
+10024=鍦烘櫙宸茬粡瀛樺湪
+10025=鑷姩鍖栧凡缁忓瓨鍦�
+10026=spk涓嶆敮鎸佽鍔熻兘
+10027=spk鍔熻兘涓嶆敮鎸佹鍔熻兘鍊�
+10028=娌℃湁鏉冮檺
+10029=璁惧鐩爣閲嶅
+10030=娌℃湁杩滅▼鎺у埗鏉冮檺
+10031=璁惧涓嶈兘涓虹┖
+10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
+10033=璁惧涓嶅瓨鍦�
\ No newline at end of file
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png
new file mode 100644
index 0000000..31c189d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIconBig.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png
new file mode 100644
index 0000000..87957ba
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconBlue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/zh-Hans.lproj/InfoPlist.strings b/HDL-ON_iOS/Resources/zh-Hans.lproj/InfoPlist.strings
new file mode 100644
index 0000000..b971bad
--- /dev/null
+++ b/HDL-ON_iOS/Resources/zh-Hans.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+锘�"NSAppleMusicUsageDescription"="璇诲彇浣犵殑闊充箰鍒楄〃,浠ヤ究杩炴帴澶栭儴鎾斁鍣ㄦ挱鏀鹃煶涔�";
+"NSCameraUsageDescription"="搴旂敤绋嬪簭甯屾湜璁块棶鎮ㄧ殑鐩告満锛岀敤浜庤缃埧闂寸殑鑳屾櫙鍥剧墖";
+"NSPhotoLibraryUsageDescription"="搴旂敤绋嬪簭甯屾湜璁块棶鎮ㄧ殑鐓х墖搴擄紝鐢ㄤ簬璁剧疆鎴块棿鐨勮儗鏅浘鐗�";
+"NSLocationWhenInUseUsageDescription"="浣跨敤鏈熼棿闇�瑕佷娇鐢ㄥ湴鐞嗕綅缃紝浠ヤ究鎻愪緵鏈嶅姟锛屽澶╂皵";
+"NSLocationAlwaysUsageDescription"="浣跨敤鍦扮悊浣嶇疆锛屼互渚挎彁渚涙湇鍔★紝濡傚ぉ姘�";
+"NSFaceIDUsageDescription"="闇�瑕佷娇鐢‵ace ID锛岀敤浜庤В閿侀獙璇�";
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index 2e5cb7a..1a52ef4 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -281,9 +281,11 @@
         {
             //鏈櫥褰曚笉鐢ㄥ鐞�
             if (!UserInfo.Current.IsLogin) return;
+
 #if DEBUG
             return;
 #endif
+
             Logout();
         }
 
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 62a3a56..bdb306f 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -713,6 +713,12 @@
         /// 瀵嗙爜杩炵画杈撻敊娆℃暟宸茶揪鍒�10娆�,鐢ㄦ埛宸茶閿佸畾,璇锋鏃�0鐐瑰悗鍐嶇櫥闄�
         /// </summary>
         public const int AccountLoginLock = 9049;
+        /// <summary>
+        /// 楠岃瘉闈㈠ID
+        /// </summary>
+        public const int VerifyFaceID = 9050;
+
+
 
         #region 缃戠粶璇锋眰鍝嶅簲閿欒鎻愮ず淇℃伅
         /// <summary>
@@ -784,7 +790,78 @@
         /// 浣忓畢涓嶅瓨鍦�
         /// </summary>
         public const int Home_NoExists = 10016;
-        
+        /// <summary>
+        /// 璇锋眰澶辫触锛屽弬鏁板紓甯革紒
+        /// </summary>
+        public const int RequestFailedParameterException = 10017;
+        /// <summary>
+        /// 缁戝畾鍙风爜閲嶅
+        /// </summary>
+        public const int DuplicateBindingNumber = 10018;
+        /// <summary>
+        /// 褰撳墠浣忓畢娌℃湁缁戝畾缃戝叧
+        /// </summary>
+        public const int PleaseBindTheGatewayFirst = 10019;
+        /// <summary>
+        /// 缃戝叧涓嶅瓨鍦�
+        /// </summary>
+        public const int GatewayDoesNotExist = 10020;
+        /// <summary>
+        /// 缃戝叧绂荤嚎
+        /// </summary>
+        public const int GatewayOffline = 10021;
+        /// <summary>
+        /// 璁惧绂荤嚎
+        /// </summary>
+        public const int DeviceOffline = 10022;
+        /// <summary>
+        /// 鎺у埗澶辫触,璇风◢鍚庡啀璇曪紒
+        /// </summary>
+        public const int ControlFailure = 10023;
+        /// <summary>
+        /// 鍦烘櫙宸茬粡瀛樺湪
+        /// </summary>
+        public const int SceneAlreadyExists = 10024;
+        /// <summary>
+        /// 鑷姩鍖栧凡缁忓瓨鍦�
+        /// </summary>
+        public const int AutomationAlreadyExists = 10025;
+        /// <summary>
+        /// spk涓嶆敮鎸佽鍔熻兘
+        /// </summary>
+        public const int SpkNotSupportThisFeature = 10026;
+        /// <summary>
+        /// spk鍔熻兘涓嶆敮鎸佹鍔熻兘鍊�
+        /// </summary>
+        public const int SpkNotSupportThisFunctionValue = 10027;
+        /// <summary>
+        /// 娌℃湁鏉冮檺
+        /// </summary>
+        public const int PermissionDenied = 10028;
+        /// <summary>
+        /// 璁惧鐩爣閲嶅
+        /// </summary>
+        public const int DuplicateDeviceTarget = 10029;
+        /// <summary>
+        /// 娌℃湁杩滅▼鎺у埗鏉冮檺
+        /// </summary>
+        public const int NoRemoteControlPermission = 10030;
+        /// <summary>
+        /// 璁惧涓嶈兘涓虹┖
+        /// </summary>
+        public const int TheDeviceCannotBeEmpty = 10031;
+        /// <summary>
+        /// 鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
+        /// </summary>
+        public const int NotHavePermissionToTheDevice = 10032;
+        /// <summary>
+        /// 璁惧涓嶅瓨鍦�
+        /// </summary>
+        public const int TheDeviceDoesNotExist = 10033;
+
+
+
+
         #endregion
         #endregion
     }
diff --git a/HDL_ON/DAL/Server/IMessageCommon.cs b/HDL_ON/DAL/Server/IMessageCommon.cs
index 038ae9f..12b884d 100644
--- a/HDL_ON/DAL/Server/IMessageCommon.cs
+++ b/HDL_ON/DAL/Server/IMessageCommon.cs
@@ -74,6 +74,8 @@
             //stateCodeDic["3"] = StringId.SystemIsBusy;
             //绛惧悕閿欒
             stateCodeDic["4"] = StringId.SignatureError;
+            //璇锋眰澶辫触锛屽弬鏁板紓甯革紒
+            stateCodeDic["9"] = StringId.RequestFailedParameterException;
             //楠岃瘉鐮佹牎楠屽け璐�
             stateCodeDic[StateCode.VERIFICATION_CODE_WRONG] = StringId.VerificationCodeWrong;
             //楠岃瘉鐮佸彂閫侀绻侊紝璇风◢鍚庡啀璇曪紒
@@ -85,6 +87,8 @@
             stateCodeDic[StateCode.TOKEN_EXPIRED] = StringId.NotLogin;
             //瑙f瀽鐢ㄦ埛韬唤閿欒锛岃閲嶆柊鐧诲綍
             stateCodeDic["10006"] = StringId.InvalidToken;
+            //鎮ㄥ凡鍦ㄥ彟涓�涓澶囩櫥褰�
+            stateCodeDic["10007"] = StringId.LoggedOnOtherDevices;
             //鐧诲綍澶辫触锛岃处鍙锋垨鑰呭瘑鐮侀敊璇�
             stateCodeDic["10008"] = StringId.LoginFailed_AccountOrPasswordError;
             //鐢ㄦ埛宸茬粡琚鐢�
@@ -101,14 +105,24 @@
             stateCodeDic["10014"] = StringId.AccountExist;
             //鍘熷瘑鐮侀敊璇�
             stateCodeDic["10015"] = StringId.OldPwdNoYes;
-            ////缁戝畾鍙风爜閲嶅
-            //stateCodeDic["10016"] = StringId.10016;
-            ////娉ㄥ唽澶辫触
-            //stateCodeDic["10017"] = StringId.10017;
+            //缁戝畾鍙风爜閲嶅
+            stateCodeDic["10016"] = StringId.DuplicateBindingNumber;
+            //娉ㄥ唽澶辫触
+            stateCodeDic["10017"] = StringId.RegistrationFailedPleaseTryAgain;
             ////绉熸埛涓嶅瓨鍦�
             //stateCodeDic["10018"] = StringId.10018;
             //瀵嗙爜杩炵画杈撻敊娆℃暟宸茶揪鍒�10娆�,鐢ㄦ埛宸茶閿佸畾,璇锋鏃�0鐐瑰悗鍐嶇櫥闄�
             stateCodeDic["10019"] = StringId.AccountLoginLock;
+
+            //娌℃湁鏉冮檺
+            stateCodeDic["10105"] = StringId.PermissionDenied;
+            //楠岃瘉鐮佸凡缁忓彂閫�
+            stateCodeDic["10207"] = StringId.VerificationCodePrompt;
+            //鍙戦�侀獙璇佺爜閿欒
+            stateCodeDic["10210"] = StringId.VerificationCodeWrong;
+
+
+
 
             ////鏋氫妇绫诲瀷閿欒
             //stateCodeDic["11003"] = StringId.11003;
@@ -133,10 +147,46 @@
             //stateCodeDic["10403"] = StringId.HOME_ID_EXISTS;
             //浣忓畢涓嶅瓨鍦�
             stateCodeDic["10404"] = StringId.Home_NoExists;
+            //浣忓畢娌℃湁缁戝畾缃戝叧
+            stateCodeDic["10503"] = StringId.PleaseBindTheGatewayFirst;
 
             ////璋冪敤鐢ㄦ埛妯″潡鎺ュ彛澶辫触
             //stateCodeDic["10213"] = HDL_ON.StringId;
 
+            //*********缃戝叧*********
+            //缃戝叧涓嶅瓨鍦�
+            stateCodeDic["10506"] = StringId.GatewayDoesNotExist;
+            //*********鍦烘櫙/鑷姩鍖�*********
+            //鍦烘櫙宸插瓨鍦�
+            stateCodeDic["14501"] = StringId.SceneAlreadyExists;
+            //鑷姩鍖栧凡瀛樺湪
+            stateCodeDic["14502"] = StringId.AutomationAlreadyExists;
+
+            //*********璁惧*********
+            //璁惧鐩爣閲嶅
+            stateCodeDic["10801"] = StringId.DuplicateDeviceTarget;
+            //娌℃湁杩滅▼鎺у埗鏉冮檺
+            stateCodeDic["10802"] = StringId.NoRemoteControlPermission;
+            //璁惧涓嶈兘涓虹┖
+            stateCodeDic["10803"] = StringId.TheDeviceCannotBeEmpty;
+            //鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
+            stateCodeDic["10804"] = StringId.NotHavePermissionToTheDevice;
+            //璁惧涓嶅瓨鍦�
+            stateCodeDic["10805"] = StringId.TheDeviceDoesNotExist;
+
+            //鎺у埗澶辫触
+            stateCodeDic["20000"] = StringId.ControlFailure;
+            //缃戝叧绂荤嚎
+            stateCodeDic["20001"] = StringId.GatewayOffline;
+            //璁惧绂荤嚎
+            stateCodeDic["20002"] = StringId.DeviceOffline;
+            //spk涓嶆敮鎸佽鍔熻兘
+            stateCodeDic["20101"] = StringId.SpkNotSupportThisFeature;
+            //spk鍔熻兘涓嶆敮鎸佹鍔熻兘鍊�
+            stateCodeDic["20102"] = StringId.SpkNotSupportThisFunctionValue;
+            
+
+
             #endregion
 
             #endregion
diff --git a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
index 13c10e7..63a6b1d 100644
--- a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
+++ b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
@@ -10,7 +10,7 @@
         void LoadOption()
         {
             //2020-12-12 鏈櫥褰曟垨鑰匒PP鏈惎鍔ㄩ兘杩斿洖锛岃В鍐抽棯閫�闂
-            if ( UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
+            if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
             {
                 return;
             }
@@ -21,46 +21,13 @@
             //1:楠岃瘉鎸囩汗
             if (UserInfo.Current.appUnlockType.Contains("3"))
             {
-                Action fAction = () =>
-                {
-                    LoadOption();
-                };
-                LoadGesturePage("7", fAction);
-                TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
-                TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
-                {
-                    if (e == TouchIDUtils.TouchIDState.Success)
-                    {
-                        MainPage.Log("KK:TouchID楠岃瘉鎴愬姛");
-                        UserInfo.Current.unlockTime = DateTime.Now;
-                        MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                    }
-                    else
-                    {
-                        ///灏嗛獙璇佹寚绾圭殑椤甸潰绉婚櫎
-                        MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                        if (UserInfo.Current.appUnlockType.Contains("1"))
-                        {
-                            var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action);
-                            MainPage.BasePageView.AddChidren(page);
-                            page.LoadPage("7");
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        }
-                        else if (UserInfo.Current.appUnlockType.Contains("2"))
-                        {
-                            var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
-                            MainPage.BasePageView.AddChidren(page);
-                            page.LoadPage("7");
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        }
-
-                    }
-                };
+                TouchIDVerification();
             }
             else if (UserInfo.Current.appUnlockType.Contains("4"))
             {
                 //Face ID楠岃瘉
                 //2020-12-11 寰呭鍔犻潰瀹瑰け璐ラ獙璇侀〉闈紝涓嶇劧浼氬鑷撮攣灞忓姞瀵嗘棤鏁�
+                FaceIDVerification();
             }
             else if (UserInfo.Current.appUnlockType.Contains("1"))
             {
@@ -120,6 +87,57 @@
         }
 
         /// <summary>
+        /// 鎸囩汗楠岃瘉
+        /// </summary>
+        void TouchIDVerification()
+        {
+            //楠岃瘉鎴愬姛Action
+            Action successAction = () =>
+            {
+                UserInfo.Current.unlockTime = DateTime.Now;
+            };
+
+            //寮瑰嚭鎸囩汗楠岃瘉瀵硅瘽妗�
+            Action fingerAction = () =>
+            {
+                TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+            };
+            //鍔犺浇UI椤甸潰
+            LoadGesturePage("7", fingerAction);
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    MainPage.Log("KK:TouchID楠岃瘉鎴愬姛");
+                    UserInfo.Current.unlockTime = DateTime.Now;
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                }
+                else
+                {
+                    ///灏嗛獙璇佹寚绾圭殑椤甸潰绉婚櫎
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                    if (UserInfo.Current.appUnlockType.Contains("1"))
+                    {
+                        var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
+                        MainPage.BasePageView.AddChidren(page);
+                        page.LoadPage("7");
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    }
+                    else if (UserInfo.Current.appUnlockType.Contains("2"))
+                    {
+                        var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
+                        MainPage.BasePageView.AddChidren(page);
+                        page.LoadPage("7");
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    }
+
+                }
+            };
+        }
+
+        /// <summary>
         /// 鍔犺浇鎸囩汗楠岃瘉鐣岄潰
         /// </summary>
         public void LoadGesturePage(string optionType, Action fingerAction)
@@ -152,7 +170,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(102),
                 Height = Application.GetRealWidth(102),
-                UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FingerIconRed.png",
+                UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FingerIconBlue.png",
             };
             bodyView.AddChidren(btnFingerIcon);
 
@@ -200,7 +218,141 @@
             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
             //dialog.Show();
-            Console.WriteLine("-0987654321");
+            //Console.WriteLine("-0987654321");
         }
+
+        /// <summary>
+        /// 闈㈠ID楠岃瘉
+        /// </summary>
+        void FaceIDVerification()
+        {
+            //楠岃瘉鎴愬姛Action
+            Action successAction = () =>
+            {
+                UserInfo.Current.unlockTime = DateTime.Now;
+            };
+
+            //寮瑰嚭鎸囩汗楠岃瘉瀵硅瘽妗�
+            Action faceIDAction = () =>
+            {
+                TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.VerifyFaceID));
+            };
+            //鍔犺浇UI椤甸潰
+            LoadFaceIDGesturePage("7", faceIDAction);
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.VerifyFaceID));
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    MainPage.Log("KK:TouchID楠岃瘉鎴愬姛");
+                    UserInfo.Current.unlockTime = DateTime.Now;
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                }
+                else
+                {
+                    ///灏嗛獙璇佹寚绾圭殑椤甸潰绉婚櫎
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                    if (UserInfo.Current.appUnlockType.Contains("1"))
+                    {
+                        var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
+                        MainPage.BasePageView.AddChidren(page);
+                        page.LoadPage("7");
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    }
+                    else if (UserInfo.Current.appUnlockType.Contains("2"))
+                    {
+                        var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
+                        MainPage.BasePageView.AddChidren(page);
+                        page.LoadPage("7");
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    }
+
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇闈㈠ID楠岃瘉鐣岄潰
+        /// </summary>
+        public void LoadFaceIDGesturePage(string optionType, Action faceIDAction)
+        {
+            var bodyView = new FrameLayout()
+            {
+                BackgroundColor = CSS.CSS_Color.MainBackgroundColor
+            };
+            MainPage.BasePageView.AddChidren(bodyView);
+
+            bodyView.AddChidren(new Button()
+            {
+                Height = Application.GetRealHeight(64),
+                BackgroundColor = CSS.CSS_Color.BackgroundColor,
+            });
+
+            bodyView.AddChidren(new Button()
+            {
+                Y = Application.GetRealHeight(196),
+                Height = Application.GetRealHeight(42),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.VerifyFaceID,
+            });
+
+            var btnFaceIdIcon = new Button()
+            {
+                Y = Application.GetRealHeight(260),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(102),
+                Height = Application.GetRealWidth(102),
+                UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FaceIdIconBig.png",
+            };
+            bodyView.AddChidren(btnFaceIdIcon);
+
+            btnFaceIdIcon.MouseUpEventHandler = (sender, e) =>
+            {
+                faceIDAction();
+            };
+
+            var btnOtherVerify = new Button()
+            {
+                Y = Application.GetRealHeight(527),
+                Height = Application.GetRealHeight(40),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS.CSS_Color.MainColor,
+                TextSize = CSS.CSS_FontSize.TextFontSize,
+                TextID = UserInfo.Current.appUnlockType.Contains("1") ? StringId.VerifyDigitalPassword : StringId.VerifyGesturePassword,
+            };
+            bodyView.AddChidren(btnOtherVerify);
+
+            btnOtherVerify.MouseUpEventHandler = (sender, e) =>
+            {
+                ///灏嗛獙璇侀潰瀹笽D鐨勯〉闈㈢Щ闄�
+                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                Action action = () =>
+                {
+                    UserInfo.Current.unlockTime = DateTime.Now;
+                };
+                if (UserInfo.Current.appUnlockType.Contains("1"))
+                {
+                    var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage(optionType);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+                else if (UserInfo.Current.appUnlockType.Contains("2"))
+                {
+                    var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage(optionType);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+
+            };
+
+            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+        }
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
index bbb9828..57277aa 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
@@ -23,25 +23,6 @@
         {
             bodyView = this;
             residenceMemberInfos = new List<ResidenceMemberInfo>();
-//#if DEBUG
-//            //tr娴嬭瘯浣忓畢----娴嬭瘯鍒嗕韩
-//            var light = new Light()
-//            {
-//                sid = "030101123456780202010005ABCP",
-//                deviceId = "1333657366709645314",
-//                name = "鐏�1",
-//            };
-//            light.SaveFunctionData();
-//            var light2 = new Light()
-//            {
-//                sid = "030101123456780202010005ABCQ",
-//                deviceId = "1333657366743199746",
-//                name = "鐏�2"
-//            };
-//            light2.SaveFunctionData();
-//            DB_ResidenceData.functionList.lights.Add(light);
-//            DB_ResidenceData.functionList.lights.Add(light2);
-//#endif
         }
 
         public void LoadPage()
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
index 49a8ae4..1dc0b55 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
@@ -114,11 +114,6 @@
             {
                 //鎻愮ず
                 IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
-                //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
-                Application.RunOnMainThread(() =>
-                {
-                    waitPage.Hide();
-                });
             }
             Application.RunOnMainThread(() =>
             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
index 6c33963..29cef83 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
@@ -66,7 +66,7 @@
                 IsBold = true,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
-                TextID = optionType == "7" ? StringId.SetGesturePassword : StringId.VerifyGesturePassword,
+                TextID =  StringId.VerifyGesturePassword,
             };
             bodyView.AddChidren(btnTipTitle);
 
@@ -79,14 +79,27 @@
                 TextColor = CSS_Color.TextualColor,
                 SelectedTextColor = CSS_Color.WarningColor,
                 TextSize = CSS_FontSize.TextFontSize,
-                TextID = optionType == "2" ? StringId.DrawUnlockPatternAgain : StringId.DrawUnlockPattern,
+                TextID = StringId.DrawUnlockPattern,
             };
             bodyView.AddChidren(btnTipMsg);
 
-            if (optionType == "7")
+            if (optionType == "1")
             {
-                btnTipTitle.TextID = StringId.DrawUnlockPattern;
+                btnTipMsg.TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.DrawUnlockPattern : StringId.DrawUnlockPatternAgain;
+                //璁剧疆鎵嬪娍瀵嗙爜
+                btnTipTitle.TextID = StringId.SetGesturePassword;
+            }else if(optionType == "2")
+            {
+                //璇疯緭鍏ュ師鎵嬪娍瀵嗙爜
+                btnTipTitle.TextID = StringId.PleaseDrawTheOriginalGesturePassword;
             }
+
+            //if (optionType == "7")
+            //{
+            //    //璇风粯鍒惰В閿佸浘妗�
+            //    btnTipTitle.TextID = StringId.DrawUnlockPattern;
+            //}
+
 
             GestureLockView mGestureLockView = new GestureLockView
             {
@@ -145,7 +158,7 @@
             if (optionType == "5" || optionType == "6")
             {
                 //杈撳叆鐧诲綍瀵嗙爜楠岃瘉 鎻愮ず鎸夐挳
-                AddInputPasswordTipButton();
+                AddInputPasswordTipButton(optionType);
             }
             else if (optionType == "7")
             {
@@ -242,9 +255,13 @@
                                 Language.StringByID(StringId.TurnOnFaceIdUnlocking);
                 if (TouchIDUtils.getTouchIDSupperType() != TouchIDUtils.TouchIDSupperType.None)
                 {
-                    Action<bool> action = (result) =>
+                    var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
+
+                    //濡傛灉涔嬪墠娌¤缃寚绾规垨鑰呴潰瀹笽D鎵嶆樉绀烘槸鍚﹀紑鍚�
+                    if (!UserInfo.Current.appUnlockType.Contains(unlockType))
                     {
-                        var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
+                        Action<bool> action = (result) =>
+                    {
                         if (result)
                         {
                             if (!UserInfo.Current.appUnlockType.Contains(unlockType))
@@ -262,7 +279,8 @@
                         UserInfo.Current.SaveUserInfo();
                         backAction();
                     };
-                    page.AdditionalOperations(tipMsg, action);
+                        page.AdditionalOperations(tipMsg, action);
+                    }
                 }
                 if (!UserInfo.Current.appUnlockType.Contains("2"))
                 {
@@ -360,7 +378,7 @@
         /// <summary>
         /// 杈撳叆鐧诲綍瀵嗙爜楠岃瘉 鎻愮ず鎸夐挳
         /// </summary>
-        void AddInputPasswordTipButton()
+        void AddInputPasswordTipButton(string optionType)
         {
             Button btnLoginAccountVerify = new Button()
             {
@@ -381,16 +399,19 @@
                     var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw);
                     if (resultObj.Code == StateCode.SUCCESS)
                     {
-                        UserInfo.Current.appUnlockPasswrod = "";
-                        UserInfo.Current.appUnlockType = new System.Collections.Generic.List<string>();
-                        UserInfo.Current.SaveUserInfo();
-                        this.RemoveFromParent();
-                        backAction();
+                        //UserInfo.Current.appUnlockPasswrod = "";
+                        //UserInfo.Current.appUnlockType = new System.Collections.Generic.List<string>();
+                        //UserInfo.Current.SaveUserInfo();
+                        //this.RemoveFromParent();
+                        //backAction();
+                        PasswordInputPassed(optionType);
                     }
                     else
                     {
-                        //鐧诲綍澶辫触
-                        IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                        Application.RunOnMainThread(() =>
+                        {
+                            Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError));
+                        });
                     }
 
                 };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
index 4934c6b..e94eb79 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
@@ -58,12 +58,15 @@
             };
             bodyView.AddChidren(btnTipTitle);
 
-
-            if (optionType == "2" || optionType == "3")
+            if (optionType == "1")
+            {
+                btnTipTitle.TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.PlsEntryPassword : StringId.PlsRegisterRepeatPassword;
+            }
+            else if (optionType == "2")
             {
                 btnTipTitle.TextID = StringId.PleaseEnterTheOriginalDigitalPassword;
             }
-            if (optionType == "7")
+            else
             {
                 btnTipTitle.TextID = StringId.PlsEntryPassword;
             }
@@ -152,7 +155,8 @@
 
             //etPassword.MouseUpEventHandler = (sender, e) => { };
 
-            etPassword.TextChangeEventHandler = (sender, e) => {
+            etPassword.TextChangeEventHandler = (sender, e) =>
+            {
                 passwrod = etPassword.Text.Trim();
                 switch (etPassword.Text.Trim().Length)
                 {
@@ -214,7 +218,8 @@
                 }
             };
 
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 etPassword.Foucs = true;
             };
             bodyView.MouseUpEventHandler = eventHandler;
@@ -229,9 +234,9 @@
             if (optionType == "3" || optionType == "5" || optionType == "6")
             {
                 //杈撳叆鐧诲綍瀵嗙爜楠岃瘉 鎻愮ず鎸夐挳
-                AddInputPasswordTipButton();
+                AddInputPasswordTipButton(optionType);
             }
-            else if(optionType == "7")
+            else if (optionType == "7")
             {
                 //浣跨敤璐︽埛瀵嗙爜鐧诲綍鎸夐挳 鎻愮ず鎸夐挳
                 AddLoginTipButton();
@@ -285,26 +290,33 @@
                 if (TouchIDUtils.getTouchIDSupperType() != TouchIDUtils.TouchIDSupperType.None)
                 {
                     var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
-                    Action<bool> action = (result) =>
+
+                    //濡傛灉涔嬪墠娌¤缃寚绾规垨鑰呴潰瀹笽D鎵嶆樉绀烘槸鍚﹀紑鍚�
+                    if (!UserInfo.Current.appUnlockType.Contains(unlockType))
                     {
-                        if (result)
+                        Action<bool> action = (result) =>
                         {
-                            if (!UserInfo.Current.appUnlockType.Contains(unlockType))
+                            if (result)
                             {
-                                UserInfo.Current.appUnlockType.Add(unlockType);
+                                if (!UserInfo.Current.appUnlockType.Contains(unlockType))
+                                {
+                                    UserInfo.Current.appUnlockType.Add(unlockType);
+                                }
                             }
-                        }
-                        else
-                        {
-                            if (UserInfo.Current.appUnlockType.Contains(unlockType))
+                            else
                             {
-                                UserInfo.Current.appUnlockType.Remove(unlockType);
+                                if (UserInfo.Current.appUnlockType.Contains(unlockType))
+                                {
+                                    UserInfo.Current.appUnlockType.Remove(unlockType);
+                                }
                             }
-                        }
-                        backAction();
-                        UserInfo.Current.SaveUserInfo();
-                    };
-                    page.AdditionalOperations(tipMsg, action);
+                            backAction();
+                            UserInfo.Current.SaveUserInfo();
+                        };
+
+
+                        page.AdditionalOperations(tipMsg, action);
+                    }
                 }
                 if (!UserInfo.Current.appUnlockType.Contains("1"))
                 {
@@ -384,7 +396,8 @@
         /// <summary>
         /// 浣跨敤璐︽埛瀵嗙爜鐧诲綍鎸夐挳 鎻愮ず鎸夐挳
         /// </summary>
-        void AddLoginTipButton(){
+        void AddLoginTipButton()
+        {
             Button btnLoginAccountVerify = new Button()
             {
                 Y = Application.GetRealHeight(517),
@@ -406,7 +419,7 @@
         /// <summary>
         /// 杈撳叆鐧诲綍瀵嗙爜楠岃瘉 鎻愮ず鎸夐挳
         /// </summary>
-        void AddInputPasswordTipButton()
+        void AddInputPasswordTipButton(string optionType)
         {
             Button btnLoginAccountVerify = new Button()
             {
@@ -422,15 +435,18 @@
             btnLoginAccountVerify.MouseUpEventHandler = (sender, e) =>
             {
                 //杈撳叆鐧诲綍瀵嗙爜楠岃瘉
-                Action<string> action = (pw) => {
+                Action<string> action = (pw) =>
+                {
                     var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw);
                     if (resultObj.Code.ToUpper() == StateCode.SUCCESS)
                     {
-                        UserInfo.Current.appUnlockPasswrod = "";
-                        UserInfo.Current.appUnlockType = new System.Collections.Generic.List<string>();
-                        UserInfo.Current.SaveUserInfo();
-                        this.RemoveFromParent();
-                        backAction();
+                        //UserInfo.Current.appUnlockPasswrod = "";
+                        //UserInfo.Current.appUnlockType = new System.Collections.Generic.List<string>();
+                        //UserInfo.Current.SaveUserInfo();
+                        //this.RemoveFromParent();
+                        //backAction();
+
+                        PasswordInputPassed(optionType);
                     }
                     else
                     {
@@ -438,8 +454,7 @@
                         {
                             Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError));
                         });
-                        ////鐧诲綍澶辫触
-                        //IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+
                     }
 
                 };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
index dc14851..5266860 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
@@ -696,7 +696,7 @@
             {
                 Height = Application.GetRealHeight(51),
             };
-            if (sTouchID && UserInfo.Current.appUnlockPasswrod != ""&&!UserInfo.Current.appUnlockType.Contains("4"))
+            if (sTouchID && UserInfo.Current.appUnlockPasswrod != "" && !UserInfo.Current.appUnlockType.Contains("4"))
             {
                 unlockOptionView.AddChidren(fingerprintUnlockDiv);
             }
@@ -750,7 +750,7 @@
             {
                 Height = Application.GetRealHeight(50),
             };
-            if (sFaceID && UserInfo.Current.appUnlockPasswrod != "" && !UserInfo.Current.appUnlockType.Contains("4"))
+            if (sFaceID && UserInfo.Current.appUnlockPasswrod != "" && !UserInfo.Current.appUnlockType.Contains("3"))
             {
                 unlockOptionView.AddChidren(faceIdUnlockDiv);
             }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
index 01125ba..496648d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
@@ -44,48 +44,19 @@
                     unlockOptionView.Visible = false;
                     refreshAction();
                 };
-                Action action1 = () => {
+                Action action1 = () =>
+                {
                     if (!btnUnprotectedBg.IsSelected)
                     {
                         //1:楠岃瘉鎸囩汗
                         if (UserInfo.Current.appUnlockType.Contains("3"))
                         {
-                            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
-                            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
-                            {
-                                if (e == TouchIDUtils.TouchIDState.NotSupport)
-                                {
-                                    MainPage.Log("KK:褰撳墠璁惧涓嶆敮鎸乀ouchID楠岃瘉,璇疯緭鍏ュ瘑鐮佹潵楠岃瘉");
-                                }
-                                else if (e == TouchIDUtils.TouchIDState.Success)
-                                {
-                                    MainPage.Log("KK:TouchID楠岃瘉鎴愬姛");
-                                    action();
-                                }
-                                else if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
-                                {
-                                    MainPage.Log("KK:鐢ㄦ埛閫夋嫨鎵嬪姩杈撳叆瀵嗙爜");
-                                    if (UserInfo.Current.appUnlockType.Contains("1"))
-                                    {
-                                        var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action);
-                                        MainPage.BasePageView.AddChidren(page);
-                                        page.LoadPage("4");
-                                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                                    }
-                                    else if (UserInfo.Current.appUnlockType.Contains("1"))
-                                    {
-                                        var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
-                                        MainPage.BasePageView.AddChidren(page);
-                                        page.LoadPage("4");
-                                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                                    }
-                                }
-                            };
+                            TouchIDVerification_TurnOffUnlock(action);
                         }
                         else if (UserInfo.Current.appUnlockType.Contains("4"))
                         {
                             //Face ID楠岃瘉
-                            //
+                            FaceIDVerification_TurnOffUnlock(action);
                         }
                         else if (UserInfo.Current.appUnlockType.Contains("1"))
                         {
@@ -319,64 +290,14 @@
             {
                 btnFingerprintUnlockSwtichIcon.MouseUpEventHandler = (sender, e1) =>
                 {
-                    Action fingerAction = () => {
-                        TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
-                    };
-                    new AppUnlockPage().LoadGesturePage("5",fingerAction);
-
-                    TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
-
-                    TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
-                    {
-                        if (e == TouchIDUtils.TouchIDState.Success)
-                        {
-                            var result = btnFingerprintUnlockSwtichIcon.IsSelected = !btnFingerprintUnlockSwtichIcon.IsSelected;
-                            if (result)
-                            {
-                                if (!UserInfo.Current.appUnlockType.Contains("3"))
-                                {
-                                    UserInfo.Current.appUnlockType.Add("3");
-                                    UserInfo.Current.SaveUserInfo();
-                                }
-                            }
-                            else
-                            {
-                                if (UserInfo.Current.appUnlockType.Contains("3"))
-                                {
-                                    UserInfo.Current.appUnlockType.Remove("3");
-                                    UserInfo.Current.SaveUserInfo();
-                                }
-                            }
-                            //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
-                            MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                        }
-                        else// if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
-                        {
-                            if (UserInfo.Current.appUnlockType.Contains("1"))
-                            {
-                                var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, refreshAction);
-                                MainPage.BasePageView.AddChidren(page);
-                                page.LoadPage("5");
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                            }
-                            else if (UserInfo.Current.appUnlockType.Contains("2"))
-                            {
-                                var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, refreshAction);
-                                MainPage.BasePageView.AddChidren(page);
-                                page.LoadPage("5");
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                            }
-                        }
-                    };
+                    TouchIDVerification_SwtichOnOff();
                 };
             }
             if (sFaceID)
             {
                 btnFaceIdUnlockSwtichIcon.MouseUpEventHandler = (sender, e1) =>
                 {
-                    //btnFaceIdUnlockSwtichIcon.IsSelected = !btnFaceIdUnlockSwtichIcon.IsSelected;
-                    if (!btnFaceIdUnlockSwtichIcon.IsSelected)
-                    { }
+                    FaceIDVerification_SwtichOnOff();
                 };
             }
         }
@@ -396,5 +317,197 @@
             return true;
         }
 
+        /// <summary>
+        /// 闈㈠ID寮�鍚拰鍏抽棴
+        /// </summary>
+        void FaceIDVerification_SwtichOnOff()
+        {
+            //6:闈㈠ID寮�鍏�
+            string optionType = "6";
+            //4:闈㈠ID
+            string faceIDUnlockType = "4";
+
+            Action fingerAction = () =>
+            {
+                TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.VerifyFaceID));
+            };
+            new AppUnlockPage().LoadFaceIDGesturePage(optionType, fingerAction);
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.VerifyFaceID));
+
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    var result = btnFaceIdUnlockSwtichIcon.IsSelected = !btnFaceIdUnlockSwtichIcon.IsSelected;
+                    if (result)
+                    {
+                        if (!UserInfo.Current.appUnlockType.Contains(faceIDUnlockType))
+                        {
+                            UserInfo.Current.appUnlockType.Add(faceIDUnlockType);
+                            UserInfo.Current.SaveUserInfo();
+                        }
+                    }
+                    else
+                    {
+                        if (UserInfo.Current.appUnlockType.Contains(faceIDUnlockType))
+                        {
+                            UserInfo.Current.appUnlockType.Remove(faceIDUnlockType);
+                            UserInfo.Current.SaveUserInfo();
+                        }
+                    }
+                    //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                }
+                else// if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
+                {
+                    ///灏嗛獙璇侀潰瀹笽D鐨勯〉闈㈢Щ闄�
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+
+                    GotogoToVerifyPasswordPage(optionType, refreshAction);
+                }
+            };
+        }
+
+        /// <summary>
+        /// FaceID楠岃瘉 鍏抽棴瑙i攣璁剧疆
+        /// </summary>
+        /// <param name="action">楠岃瘉鎴愬姛浜嬩欢</param>
+        void FaceIDVerification_TurnOffUnlock(Action successAction)
+        {
+            //浣跨敤瀵嗙爜楠岃瘉
+            Action goToVerifyPasswordAction = () =>
+            {
+                //鍏抽棴瑙i攣楠岃瘉
+                GotogoToVerifyPasswordPage("4", successAction);
+            };
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.VerifyFaceID));
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    MainPage.Log("KK:FaceID楠岃瘉鎴愬姛");
+                    successAction?.Invoke();
+                }
+                else if (e == TouchIDUtils.TouchIDState.NotSupport)
+                {
+                    MainPage.Log("KK:褰撳墠璁惧涓嶆敮鎸丗aceID楠岃瘉,璇疯緭鍏ュ瘑鐮佹潵楠岃瘉");
+                    goToVerifyPasswordAction();
+                }
+                else if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
+                {
+                    MainPage.Log("KK:鐢ㄦ埛閫夋嫨鎵嬪姩杈撳叆瀵嗙爜");
+                    goToVerifyPasswordAction();
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鎸囩汗ID寮�鍚拰鍏抽棴
+        /// </summary>
+        void TouchIDVerification_SwtichOnOff()
+        {
+            //5:鎸囩汗ID寮�鍏�
+            string optionType = "5";
+
+            Action fingerAction = () =>
+            {
+                TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+            };
+            new AppUnlockPage().LoadGesturePage(optionType, fingerAction);
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    var result = btnFingerprintUnlockSwtichIcon.IsSelected = !btnFingerprintUnlockSwtichIcon.IsSelected;
+                    if (result)
+                    {
+                        if (!UserInfo.Current.appUnlockType.Contains("3"))
+                        {
+                            UserInfo.Current.appUnlockType.Add("3");
+                            UserInfo.Current.SaveUserInfo();
+                        }
+                    }
+                    else
+                    {
+                        if (UserInfo.Current.appUnlockType.Contains("3"))
+                        {
+                            UserInfo.Current.appUnlockType.Remove("3");
+                            UserInfo.Current.SaveUserInfo();
+                        }
+                    }
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                }
+                else// if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
+                {
+                    ///灏嗛獙璇佹寚绾笽D鐨勯〉闈㈢Щ闄�
+                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                    
+                    GotogoToVerifyPasswordPage(optionType, refreshAction);
+                }
+            };
+        }
+
+        /// <summary>
+        /// TouchID楠岃瘉 鍏抽棴瑙i攣璁剧疆
+        /// </summary>
+        /// <param name="action">楠岃瘉鎴愬姛浜嬩欢</param>
+        void TouchIDVerification_TurnOffUnlock(Action successAction)
+        {
+            //浣跨敤瀵嗙爜楠岃瘉
+            Action goToVerifyPasswordAction = () =>
+            {
+                //鍏抽棴瑙i攣楠岃瘉
+                GotogoToVerifyPasswordPage("4", successAction);
+            };
+
+            TouchIDUtils.Instance.showTouchIDWithDescribe(null, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
+            {
+                if (e == TouchIDUtils.TouchIDState.NotSupport)
+                {
+                    MainPage.Log("KK:褰撳墠璁惧涓嶆敮鎸乀ouchID楠岃瘉,璇疯緭鍏ュ瘑鐮佹潵楠岃瘉");
+                    goToVerifyPasswordAction?.Invoke();
+                }
+                else if (e == TouchIDUtils.TouchIDState.Success)
+                {
+                    MainPage.Log("KK:TouchID楠岃瘉鎴愬姛");
+                    successAction?.Invoke();
+                }
+                else if (e == TouchIDUtils.TouchIDState.InputPassword || e == TouchIDUtils.TouchIDState.TouchIDLockout)
+                {
+                    MainPage.Log("KK:鐢ㄦ埛閫夋嫨鎵嬪姩杈撳叆瀵嗙爜");
+                    goToVerifyPasswordAction?.Invoke();
+                }
+
+            };
+        }
+
+        /// <summary>
+        /// 璺宠浆鎵嬪娍鎴栬�呭瘑鐮侀獙璇佺晫闈�
+        /// </summary>
+        /// <param name="optionType">1:璁剧疆瀵嗙爜锛�2:楠岃瘉瀵嗙爜;3:鍏抽棴瀵嗙爜;4:鍏抽棴瑙i攣璁剧疆;5:鎸囩汗ID寮�鍏筹紱6:闈㈠ID寮�鍏�;7:瑙i攣楠岃瘉</param>
+        /// <param name="successAction"></param>
+        void GotogoToVerifyPasswordPage(string optionType, Action successAction)
+        {
+            if (UserInfo.Current.appUnlockType.Contains("1"))
+            {
+                var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage(optionType);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            }
+            else if (UserInfo.Current.appUnlockType.Contains("2"))
+            {
+                var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage(optionType);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            }
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0