用户
 找回密码
 立即注册

33

主题

96

帖子

1811

积分

金牌会员

Rank: 6Rank: 6

积分
1811
发表于 2019-5-6 13:57:54
求助:


我看到社区中有一篇16年发布的文章, 关于使用手势功能的
https://www.smobiler.com/forum.p ... ghlight=VerifyLocal

我查到现在(4.7)中,Smobiler.Core.API的功能已经转移到Smobiler.Core.RPC 中,而我不知道如何来转换
Client.Pattern.VerifyLocal((object s,Smobiler.Core.API.PatternLocalVerifiedEventArgs args)=>
成新的方式。

我看到VerifyLocal的参数是Smobiler.Core.RPC.PatternLocalVerifiedEventHandler,
但是代码Client.Pattern.VerifyLocal((object s, Smobiler.Core.RPC.PatternLocalVerifiedEventArgs args =>
总是报错。

以下是我认为的代码:

                this.Client.Pattern.VerifyLocal((Object s, Smobiler.Core.RPC.PatternLocalVerifiedEventArgs args =>
                {
                    if(args.isError == false)
                    {
                        frmMain _form = new frmMain();
                        this.Show(_form);
                    }
                });

请指正。

谢谢
大杰米

分享至 : QQ空间
0 人收藏
使用道具 举报 回复
发表于 2019-5-6 14:40:11
使用道具 举报 回复 支持 反对
发表于 2019-5-6 23:52:35
Lula,感谢!!里面还有好多其他Client的示例!!学习了。

不过还想继续请教,我理解手势密码(Client.Pattern.Password)应该是保存在客户端得的,但是为什么我的APP每次设置手势成功了,
也设置了this.Client.Pattern.Password 了,但是下次APP进入的时候,this.Client.Pattern.Password 又为null 了。感觉是APP一退出,数据就丢失了。这个符合VerifyLocal 的设定吗?

下面是代码示例,请审查。

        private void frmMainpage_Load(object sender, EventArgs e)
        {
            string Pass = this.Client.Pattern.Password;     //做断点调试
            if(! string.IsNullOrEmpty(this.Client.Pattern.Password))
            {
                this.Client.Pattern.VerifyLocal((obj, args) =>
                {
                    if (args.isError == false)
                        Proceed();
                    else
                    {
                        MessageBox.Show("密码输入错误.", MessageBoxButtons.OK, ((sender1, e1) =>
                                       {
                                          this.Client.ExitAndQuit("退出");
                                       }));
                    }

                });
            }
            else
            {
                this.Client.Pattern.Create((obj, args) =>
                {
                    if (args.isError == true)
                        Toast(args.error);
                    else
                    {
                        this.Client.Pattern.Password = args.Password;
                        Proceed();
                    }
                });
            }
        }

使用道具 举报 回复 支持 反对
发表于 2019-5-7 10:27:08
this.Client.Pattern.Password 保存在服务端内存中,重启服务端就会没有的
具体开发的时候需要你自己来保存这个手势
比如创建手势后,需要把手势保存在数据库里,用户手势验证的时候,要先在数据库里判断是不是有,有的话给this.Client.Pattern.Password赋值,再执行验证,我们不提供手势保存的
使用道具 举报 回复 支持 反对
发表于 2019-5-7 12:16:35
好的,知道了,我继续来试试。 多谢多谢。
使用道具 举报 回复 支持 反对
发表于 2019-5-10 21:31:41
Lula,

我现在已经可以用你说的方式来进行手势验证了,多谢。不过有个新的问题,如果手势验证四次不成功的话,默认的动作是重置应用。我想实现的是,如果手势验证不成功,会转到密码认证继续进行,因为在这个界面上有重置密码的功能。

我的代码示意如下:
this.Client.Pattern.VerifyLocal((obj, args2) =>
                        {
                            if (args2.isError == false)
                            {
                                if (userValidate(false))    //手势验证成功
                                {
                                    frm_Main mainPage = new frm_Main();
                                    this.Show(mainPage);
                                }
                            }
                            else   //手势不成功  , 但是这部分似乎无法触发。
                            {
                                frm_Logon Page = new frm_Logon();
                                this.Show(mainPage);
                            }
               }

上例中,else 的部分一直无法触发,不知道它的触发条件是什么?

麻烦你再给解释一下?

谢谢
大杰米
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册