亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

小程序實現新用戶判斷并跳轉激活的方法

2020-03-21 15:55:52
字體:
來源:轉載
供稿:網友

前言

上周接了一個小項目賺點外快,原以為很簡單結果被卡在一個小坑爬了好半天

它是一個供電力局使用的報修小程序,需要特定用戶在第一次使用時進行激活操作,通俗的說就是當某用戶打開時,判斷此用戶是否激活過,若未激活則進入激活頁面,若已經激活則直接進入首頁面。

邏輯上很簡單,但是在實現上碰到坑了。

小程序,判斷,跳轉激活

小程序,判斷,跳轉激活

上圖為已激活用戶或不需要激活的用戶打開小程序后進入的第一個頁面,下圖為未激活用戶打開小程序后進入的第一個頁面。

思考過程

"pages": [ "pages/index/index", "pages/active/active", "pages/index/add", "pages/my/my", "pages/mylist/mylist", "pages/home/home", "pages/rating/rating", "pages/login/mylogin", "pages/login/login", "pages/detail/detail", "pages/mylist/list", "pages/mylist/mydetail" ],

而在app.json中必須引入全部的頁面,且第一個引入的頁面為首頁面。

但是判斷邏輯必須要在用戶一打開小程序后就進行,但事實是必須先打開index頁面(即上圖),所以按照微信小程序的生命周期,我首先想到的辦法是將判斷邏輯寫在index頁的onload函數中。

在加載過程中進行判斷,從而跳轉。

var currentUser = Bmob.User.current();var currentUserId = currentUser.id;var User = Bmob.Object.extend("_User");var queryUser = new Bmob.Query(User);  queryUser.get(currentUserId, {   success: function (result) {    console.log(result)var status = result.attributes.status;var usertype = result.attributes.usertype;if (status==null&& usertype == 1) {     wx.navigateTo({      url: '/pages/active/active?lineid=' + lineid})}},   error: function (object, error) {}});

以上代碼就是我寫入onload中的判斷邏輯,先獲取當前用戶的id,從而進入數據庫查詢,獲取此用戶的status狀態和userType類型,只有status為false且userType為1時,才進行跳轉激活。

但是實際在測試時發現一個始料未及被忽視的問題。

wx.login({success: function (res) { user.loginWithWeapp(res.code).then(function (user) {var openid = user.get("authData").weapp.openid;  console.log(user, 'user', user.id, res);if (user.get("nickName")) {// 第二次訪問   console.log(user.get("nickName"), 'res.get("nickName")');var currentUser = Bmob.User.current();var currentUserId = currentUser.id;var User = Bmob.Object.extend("_User");var queryUser = new Bmob.Query(User);   queryUser.get(currentUserId, {    success: function (result) {var status = result.attributes.status;var usertype = result.attributes.usertype;     console.log(status);},    error: function (object, error) {     console.log(result);}});} else {   wx.setStorageSync('status', false),   wx.setStorageSync('usertype', 1),//保存用戶其他信息   wx.getUserInfo({    success: function (result) {var userInfo = result.userInfo;var nickName = userInfo.nickName;var avatarUrl = userInfo.avatarUrl;var u = Bmob.Object.extend("_User");var query = new Bmob.Query(u);// 這個 id 是要修改條目的 id,你在生成這個存儲并成功時可以獲取到,請看前面的文檔     query.get(user.id, {      success: function (result) {// 自動綁定之前的賬號       result.set('nickName', nickName);       result.set("userPic", avatarUrl);       result.set("openid", openid);       result.set("isbind", 0);       result.set("status", false);       result.set("usertype", 1);       result.save();}});     wx.setStorageSync('openid', openid)     wx.setStorageSync('username', user.get("username"))     wx.setStorageSync('userpic', avatarUrl)     wx.setStorageSync('nickname', nickName)}});}}, function (err) {  console.log(err, 'errr');});}}); 

因為我在app.js中進行了微信登錄,即獲取到了用戶授權信息后,將用戶的微信名、頭像以及初始化的userType和status寫入數據庫中。以上為此邏輯的代碼。

故在用戶授權前,數據庫中此用戶的userType和status是空的,而這時候按照微信小程序的生命周期,第一個首頁面已經加載完畢并顯示,即onload在判斷時,此用戶的userType和status狀態為空,則認為此用戶無需激活。而用戶點完授權后,即使存入正確的userType和status已經于事無補。

用戶第一次打開小程序,可見此時頁面已經加載完畢,但是用戶還未授權微信登錄

小程序,判斷,跳轉激活

而這時候的用戶數據均為空

小程序,判斷,跳轉激活

用戶點擊確定授權后才會寫入數據,但這時候頁面的onload早已執行完畢

小程序,判斷,跳轉激活

只能再尋找其它的解決辦法。

解決過程

總結了一下剛才失敗的原因,是因為在執行onload時,邏輯判斷語句并沒有取到正確的參數。所以要想辦法在onload函數執行前,就傳入正確的參數。

于是嘗試另外一種方法,使用本地緩存進行傳值判斷。

即用戶在一打開小程序加載app.js時,先在本地緩存中將用戶的userType和status值存入,然后在index頁面的onLoad函數中使用判斷,這樣就不存在微信登錄授權的時間差。

于是需要在用戶第一次使用時進行初始化參數并存入緩存以供onload函數判斷,而用戶如果不是第一次使用,則直接從數據庫中查找到此用戶并將此用戶的userType和status取出存入本地緩存,供onLoad函數判斷。

于是首先在app.js中加入以下兩行代碼進行新用戶初始化緩存存入

wx.setStorageSync('status', false),wx.setStorageSync('usertype', 1), 

加入以下兩行代碼進行老用戶獲取參數進行緩存存入

queryUser.get(currentUserId, {  success: function (result) {var status = result.attributes.status;var usertype = result.attributes.usertype;   wx.setStorageSync('status', status)   wx.setStorageSync('usertype', usertype)   console.log(status);},  error: function (object, error) {   console.log(result);}});

然后在index的onload函數中寫入以下邏輯,進行判斷。

var status = wx.getStorageSync('status')var usertype = wx.getStorageSync('usertype')// console.log(usertype)if (!status &&!usertype) {  wx.navigateTo({   url: '/pages/active/active?lineid=' + lineid})} else if (status ==false && usertype == 1) {  wx.navigateTo({   url: '/pages/active/active?lineid=' + lineid})} 

這里要注意,因為考慮到了緩存溢出的情況,多加了判斷status和userType非空的操作。

于是至此這個坑被完美的填了,從入坑到找坑到爬坑耗時兩小時。

總結

還是像上一篇文章說的,這是一個填坑的過程,第一個吃螃蟹的人不光要被夾,還得告訴后人怎么撬開螃蟹殼。

以上所述是小編給大家介紹的小程序實現新用戶判斷并跳轉激活的方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中国日韩欧美久久久久久久久| 亚洲韩国日本中文字幕| 国产日产久久高清欧美一区| 成人免费观看49www在线观看| 日韩欧美成人免费视频| 国模精品视频一区二区三区| 亚洲国产91精品在线观看| 精品亚洲一区二区三区四区五区| 久久久久久久久久久成人| 欧美日韩高清在线观看| 亚洲色在线视频| 68精品久久久久久欧美| 国产日本欧美一区二区三区在线| 日韩av不卡在线| 国产亚洲精品久久久久久牛牛| 国产欧美日韩精品专区| 国产免费一区二区三区在线观看| 曰本色欧美视频在线| 欧洲亚洲免费在线| 久久久日本电影| 日韩在线视频免费观看| 欧美亚洲视频在线看网址| 91国产精品视频在线| 亚洲日韩欧美视频| 九九久久久久久久久激情| 国产美女精品免费电影| 亚洲国产天堂久久综合| 2019中文字幕全在线观看| 欧美成人午夜视频| 欧美亚洲第一页| 国产精品国产三级国产aⅴ9色| 亚洲成人精品视频| 亚洲国产精品va在看黑人| 亚洲自拍小视频| 国产国语videosex另类| 搡老女人一区二区三区视频tv| 精品亚洲国产成av人片传媒| 久久久久久久网站| 久久久av免费| 欧美成人精品在线观看| 国产日韩在线看| 福利二区91精品bt7086| 欧美国产日韩xxxxx| 伊人伊成久久人综合网小说| 久久精品电影网站| 日韩大片在线观看视频| 欧美成人性生活| 国产精品午夜国产小视频| 中文字幕视频一区二区在线有码| 国产91色在线| 国产精品视频免费观看www| 久久久亚洲成人| 欧美大片在线影院| 亚洲午夜av电影| 欧美日韩在线免费观看| 日韩成人激情在线| 中文字幕亚洲精品| 国内精品久久久久久久久| 国产欧美精品久久久| 亚洲女同性videos| 亚洲美女中文字幕| 亚洲成人网在线| 日韩视频免费看| 亚洲美女www午夜| 69精品小视频| 精品久久香蕉国产线看观看亚洲| 91久久精品国产91久久性色| 亚洲精品aⅴ中文字幕乱码| 2019中文字幕在线| 欧美在线视频a| 色哟哟入口国产精品| 亚洲欧美三级伦理| 国产精品久久色| 91久久精品国产| 久久久999精品| 亚洲精品综合精品自拍| 亚洲成人av在线播放| 久久久噜噜噜久久久| 欧美一区二区视频97| 97精品伊人久久久大香线蕉| 456国产精品| 日韩一区视频在线| 亚洲精品v欧美精品v日韩精品| 国产精品久久久久久久久影视| 91大神在线播放精品| 日韩一区二区久久久| 欧美日本高清一区| 欧美香蕉大胸在线视频观看| 日本精品免费观看| 久久成人18免费网站| 国产精品久久一区| 中文字幕亚洲图片| 另类少妇人与禽zozz0性伦| 久久国产精品久久久久久久久久| 国产精品高潮呻吟久久av无限| 97香蕉超级碰碰久久免费软件| 欧美一级大片在线免费观看| 色噜噜久久综合伊人一本| 亚洲欧美国产va在线影院| 91在线免费看网站| 日韩av免费网站| 久久精品视频99| 91精品国产免费久久久久久| 久久天天躁夜夜躁狠狠躁2022| 97人人爽人人喊人人模波多| 成人免费淫片视频软件| 国产精品视频26uuu| 日韩欧美国产一区二区| 国产欧美精品一区二区三区-老狼| 国产精品亚洲аv天堂网| 亚洲无限av看| 综合国产在线视频| 欧美精品激情在线观看| 欧洲日本亚洲国产区| 久久久久久久影视| 青青在线视频一区二区三区| 2019中文字幕全在线观看| 91极品视频在线| 亚洲成人网在线观看| 神马国产精品影院av| 最近2019年中文视频免费在线观看| 欧美激情va永久在线播放| 日本久久久久久久久久久| 91沈先生在线观看| 成人免费视频xnxx.com| 国产精品久久久久久av| 中文字幕久久精品| 伊人伊人伊人久久| 国产精品va在线播放我和闺蜜| 亚洲欧洲日韩国产| 久久亚洲电影天堂| 亚洲成人久久久久| 日韩免费在线电影| 久久精品一区中文字幕| 中文字幕亚洲一区在线观看| 狠狠色香婷婷久久亚洲精品| 美乳少妇欧美精品| 国产日韩换脸av一区在线观看| 欧美成人激情视频免费观看| 中文字幕不卡av| 国产精品一区二区久久精品| 色爱av美腿丝袜综合粉嫩av| 高潮白浆女日韩av免费看| 97精品在线观看| 欧美韩国理论所午夜片917电影| 国产精品18久久久久久首页狼| 成人黄色在线免费| 在线日韩欧美视频| 色一区av在线| 亚洲免费精彩视频| 国产精品久久久久久亚洲影视| 久久影视三级福利片| 精品美女久久久久久免费| 久久人人爽人人爽爽久久| 国产精品久久9| 国产精品96久久久久久又黄又硬| 午夜精品蜜臀一区二区三区免费| 欧美性一区二区三区| 国产午夜精品一区理论片飘花| 国语自产偷拍精品视频偷| 国产精品福利无圣光在线一区| 国产一区二区三区在线观看视频| 综合136福利视频在线| 正在播放国产一区|