using System; using Shared; namespace HDL_ON.UI { /// /// app解锁界面 /// public class AppUnlockPage { void LoadOption() { //2020-12-12 未登录或者APP未启动都返回,解决闪退问题 if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null) { return; } Action action = () => { UserInfo.Current.unlockTime = DateTime.Now; }; //1:验证指纹 if (UserInfo.Current.appUnlockType.Contains("3")) { TouchIDVerification(); } else if (UserInfo.Current.appUnlockType.Contains("4")) { //Face ID验证 //2020-12-11 待增加面容失败验证页面,不然会导致锁屏加密无效 FaceIDVerification(); } else if (UserInfo.Current.appUnlockType.Contains("1")) { var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action); MainPage.BasePageView.AddChidren(page); page.LoadPage("7"); } else if (UserInfo.Current.appUnlockType.Contains("2")) { var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action); MainPage.BasePageView.AddChidren(page); page.LoadPage("7"); } #if __ANDROID__ new System.Threading.Thread(() => { int i = 0; while (i > 1) { MainPage.Log($"倒计时:{i} sec"); System.Threading.Thread.Sleep(1000); i++; } Application.RunOnMainThread(() => { MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); }) { IsBackground = true }.Start(); #else MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; #endif } /// /// /// /// 如果是第一次启动直接弹窗验证密码 public void LoadPage(bool isFirstOpen = false) { try { if (!isFirstOpen) { if (UserInfo.Current.unlockTime.AddMinutes(5) > DateTime.Now || UserInfo.Current.appUnlockPasswrod == "" || UserInfo.Current.appUnlockPage.Count == 0) { return; } } LoadOption(); } catch { Utlis.WriteLine("AppUnlockPage error"); } } /// /// 指纹验证 /// void TouchIDVerification() { //验证成功Action Action successAction = () => { UserInfo.Current.unlockTime = DateTime.Now; }; //提示数字密码验证还是绘制手势验证 string verificationTitleString = GetVerificationTitleString(); //弹出指纹验证对话框 Action fingerAction = () => { TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.PleaseVerifyTheFingerprint)); }; //加载UI页面 LoadGesturePage("7", fingerAction, null); TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, 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; } } }; } /// /// 加载指纹验证界面 /// /// /// /// public void LoadGesturePage(string optionType, Action fingerAction, Action successAction) { 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.PleaseVerifyTheFingerprint, }); var btnFingerIcon = new Button() { Y = Application.GetRealHeight(260), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(102), Height = Application.GetRealWidth(102), UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FingerIconBlue.png", }; bodyView.AddChidren(btnFingerIcon); btnFingerIcon.MouseUpEventHandler = (sender, e) => { fingerAction(); }; 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) => { ///将验证指纹的页面移除 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; //} if (successAction == null) { Action action = () => { UserInfo.Current.unlockTime = DateTime.Now; }; GotogoToVerifyPasswordPage(optionType, action); } else { GotogoToVerifyPasswordPage(optionType, successAction); } }; MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; //dialog.Show(); //Console.WriteLine("-0987654321"); } /// /// 面容ID验证 /// void FaceIDVerification() { //验证成功Action Action successAction = () => { UserInfo.Current.unlockTime = DateTime.Now; }; //提示数字密码验证还是绘制手势验证 string verificationTitleString = GetVerificationTitleString(); //弹出指纹验证对话框 Action faceIDAction = () => { TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.VerifyFaceID)); }; //加载UI页面 LoadFaceIDGesturePage("7", faceIDAction, null); TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, 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; } } }; } /// /// 加载面容ID验证界面 /// /// /// /// 指定成功的事件回调 public void LoadFaceIDGesturePage(string optionType, Action faceIDAction, Action successAction) { 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) => { ///将验证面容ID的页面移除 MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent(); if (successAction == null) { Action action = () => { UserInfo.Current.unlockTime = DateTime.Now; }; GotogoToVerifyPasswordPage(optionType, action); } else { GotogoToVerifyPasswordPage(optionType, successAction); } }; MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } /// /// 跳转手势或者密码验证界面 /// /// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证 /// 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; } } /// /// 判断是否数字验证、否则绘制手势验证 /// /// bool CheckIfUnlockPassword() { return UserInfo.Current.appUnlockType.Contains("1"); } /// /// 判断是否数字验证、否则绘制手势验证 /// /// string GetVerificationTitleString() { if (CheckIfUnlockPassword()) { return Language.StringByID(StringId.PasswordVerification); } else { return Language.StringByID(StringId.GestureVerification); } } } }