wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/UI/UI0-Public/AppUnlockPage.cs
@@ -9,7 +9,8 @@
    {
        void LoadOption()
        {
            if ( UserInfo.Current == null)
            //2020-12-12 未登录或者APP未启动都返回,解决闪退问题
            if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
            {
                return;
            }
@@ -20,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"))
            {
@@ -95,19 +63,90 @@
        }
        public void LoadPage()
        /// <summary>
        ///
        /// </summary>
        /// <param name="isFirstOpen">如果是第一次启动直接弹窗验证密码</param>
        public void LoadPage(bool isFirstOpen = false)
        {
            if (UserInfo.Current.unlockTime.AddSeconds(60) > DateTime.Now || UserInfo.Current.appUnlockPasswrod == "" || UserInfo.Current.appUnlockPage.Count == 0)
            try
            {
                return;
                if (!isFirstOpen)
                {
                    if (UserInfo.Current.unlockTime.AddMinutes(5) > DateTime.Now || UserInfo.Current.appUnlockPasswrod == "" || UserInfo.Current.appUnlockPage.Count == 0)
                    {
                        return;
                    }
                }
                LoadOption();
            }
            LoadOption();
            catch
            {
                Utlis.WriteLine("AppUnlockPage error");
            }
        }
        /// <summary>
        /// 指纹验证
        /// </summary>
        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;
                    }
                }
            };
        }
        /// <summary>
        /// 加载指纹验证界面
        /// </summary>
        public void LoadGesturePage(string optionType, Action fingerAction)
        /// <param name="optionType"></param>
        /// <param name="fingerAction"></param>
        /// <param name="successAction"></param>
        public void LoadGesturePage(string optionType, Action fingerAction, Action successAction)
        {
            var bodyView = new FrameLayout()
            {
@@ -137,7 +176,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);
@@ -161,31 +200,225 @@
            {
                ///将验证指纹的页面移除
                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                Action action = () =>
                //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)
                {
                    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;
                    Action action = () =>
                    {
                        UserInfo.Current.unlockTime = DateTime.Now;
                    };
                    GotogoToVerifyPasswordPage(optionType, action);
                }
                else if (UserInfo.Current.appUnlockType.Contains("2"))
                else
                {
                    var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage(optionType);
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    GotogoToVerifyPasswordPage(optionType, successAction);
                }
            };
            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            //dialog.Show();
            //Console.WriteLine("-0987654321");
        }
        /// <summary>
        /// 面容ID验证
        /// </summary>
        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;
                    }
                }
            };
        }
        /// <summary>
        ///  加载面容ID验证界面
        /// </summary>
        /// <param name="optionType"></param>
        /// <param name="faceIDAction"></param>
        /// <param name="successAction">指定成功的事件回调</param>
        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;
            //dialog.Show();
            Console.WriteLine("-0987654321");
        }
        /// <summary>
        /// 跳转手势或者密码验证界面
        /// </summary>
        /// <param name="optionType">1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证</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;
            }
        }
        /// <summary>
        /// 判断是否数字验证、否则绘制手势验证
        /// </summary>
        /// <returns></returns>
        bool CheckIfUnlockPassword()
        {
            return UserInfo.Current.appUnlockType.Contains("1");
        }
        /// <summary>
        /// 判断是否数字验证、否则绘制手势验证
        /// </summary>
        /// <returns></returns>
        string GetVerificationTitleString()
        {
            if (CheckIfUnlockPassword())
            {
                return Language.StringByID(StringId.PasswordVerification);
            }
            else
            {
                return Language.StringByID(StringId.GestureVerification);
            }
        }
    }
}