手机版

小程序实现新用户判断和跳转激活的方法

时间:2021-08-23 来源:互联网 编辑:宝哥软件园 浏览:

前言

上周,我做了一个小项目来赚些外快。我以为很简单,但我被困在一个小坑里,爬了很久

是电力局的小修应用程序,第一次使用需要特定用户激活。一般来说,当用户打开它时,它判断用户是否已经被激活,如果没有,它进入激活页面,如果已经被激活,它直接进入主页。

逻辑上很简单,但是在实现上遇到了坑。

上图为已激活或不需要激活的用户打开小程序后进入的第一页,下图为未激活的用户打开小程序后进入的第一页。

思维过程

pages': [ 'pages/index/index ',' pages/active/active ',' pages/index/add ',' pages/my/my ',' pages/mylist/mylist ',' pages/home/home ',' Pages/rating/rating ',' pages/login/login ',' Pages/log in/log in ',' pages/detail/detail ',' pages/mylist/list ',' pages/mylist/mydetail '但所有页面必须

但是判断逻辑必须在用户一打开小程序就进行,但事实是索引页(上图)必须先打开,所以根据微信小程序的生命周期,我首先想到的是在索引页的onload函数中写判断逻辑。

在加载过程中做出判断,然后跳转。

var currentUser=Bmob。user . current();var CurrentUserid=CurrentUser . id;var User=Bmob。object . extend(' _ User ');var queryUser=新Bmob。查询(用户);queryUser.get(currentUserId,{ success : function(result){ console . log(result)var status=result . attributes . status;var user type=result . attributes . user type;if(status==null user type==1){ wx . navigateto({ URL : '/page/active/active?lineid=' lineid})}},error:函数(对象,错误){ } });上面的代码是我写在onload里的判断逻辑。我先获取当前用户的id,然后进入数据库查询,得到这个用户的状态状态和userType。只有当状态为false且userType为1时,跳转才会被激活。

然而,在实践中,我们发现了一个意外被忽视的问题。

wx . log in({ success : function(RES){ user . loginwithwaepp(RES . code))。然后(function(user){ var OpenID=user . get(' authData '). weapp . OpenID;console.log(用户,' user ',user.id,RES);If (user.get('昵称'){//访问控制台。第二次登录(用户。get('昵称'),' res.get('昵称'));var currentUser=Bmob。user . current();var CurrentUserid=CurrentUser . id;var User=Bmob。object . extend(' _ User ');var queryUser=新Bmob。查询(用户);queryUser.get(currentUserId,{ success : function(result){ var status=result . attributes . status;var user type=result . attributes . user type;console.log(状态);},error:函数(对象,错误){ console.log(结果);}});} else { wx . setstorageync(' status ',false),wx . setstorageync(' user type ',1),//保存其他用户信息wx . getuser info({ success : function(result){ varuser info=result . user info;var昵称=userInfo .昵称;var avatar URL=userinfo . avatar URL;var u=Bmob。object . extend(' _ User ');var查询=新Bmob。查询(u);//这个id是需要修改的项目的id,在生成店铺成功时可以得到。自动绑定前请参考前面的文档query.get (user.id,{ success : function(result){//the account number result . set(' nickName ',昵称);result.set('userPic ',avatar URL);result.set('openid ',OpenID);result.set('isbind ',0);result.set('status ',false);result.set('usertype ',1);result . save();}});wx . setstorageync(' OpenID ',OpenID)wx . setstorageync(' username ',user . get(' username ')wx . setstorageync(' user pic ',avatar URL)wx . setstorageync('昵称,昵称)} });}},function (err) { console.log(err,' errr ');});}});因为我是在app.js中登录微信的,也就是拿到用户授权信息后,我把用户的微信名称、头像以及初始化的userType和状态写入了数据库。以上就是这个逻辑的代码。

因此在用户授权前,数据库中该用户的userType和状态为空,此时根据微信小程序的生命周期,第一个主页已经加载显示,即onload判断该用户的userType和状态为空时,认为该用户无需激活。但是,在用户单击授权后,保存正确的用户类型和状态是没有用的。

当用户第一次打开小程序时,可以看到此时页面已经加载,但用户没有授权微信登录

此时,用户数据为空

在用户单击“确定”进行授权之前,数据不会被写入,但是页面的加载已经执行

我们只能找到其他解决办法。

解决过程

总结一下刚才失败的原因,因为逻辑判断语句在执行onload的时候没有得到正确的参数。所以在执行onload函数之前,请尝试传入正确的参数。

所以尝试另一种方法,使用本地缓存来判断值。

即用户打开小程序加载app.js时,首先将用户的userType和状态值存储在本地缓存中,然后在索引页的onLoad功能中使用判断,这样就不会出现微信登录授权的时间差。

因此,需要初始化参数并将其存储在缓存中,以便onLoad函数进行判断。如果用户不是第一次使用,他会直接从数据库中找到用户,取出用户的userType和状态,存储在本地缓存中,供onload函数判断。

首先,在app.js中添加以下两行代码,为新用户初始化缓存

Wx。setstorage ync(' status ',false),wx。setstoragesync ('usertype ',1),为旧用户添加以下两行代码,以获取缓存存储的参数

queryUser.get(currentUserId,{ success : function(result){ var status=result . attributes . status;var user type=result . attributes . user type;wx . setstorageync(' status ',status)wx . setstorageync(' user type ',user type)console . log(status);},error:函数(对象,错误){ console.log(结果);}});然后在索引的onload函数中写下下面的逻辑来判断。

var status=wx . getstorageync(' status ')var user type=wx . getstorageync(' user type ')//console . log(user type)if(!状态!user type){ wx . navigateto({ URL : '/pages/active/active?line id=' line id })} else if(status==false user type==1){ wx . navigateto({ URL : '/pages/active/active?Lineid=' lineid})}这里要注意的是,考虑到缓存溢出的情况,我们增加了更多的操作来判断status和userType不是空的。

到目前为止,坑已经被完美填满,从入坑到找到坑再爬坑需要两个小时。

摘要

正如上一篇文章所说,这是一个填坑的过程。第一个吃螃蟹的人不仅要抓,还要告诉后人如何撬开蟹壳。

以上就是边肖介绍的用小程序实现新用户判断和跳转激活的方法。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:小程序实现新用户判断和跳转激活的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。