1.问题发现
最近一个微信小程序,在tarbar上做了登录检查:当用户点击tarbar“我的"和”购物车“时,会请求后台API检查用户是否登录,如果未登录,则跳转一个统一的登录界面。
登录界面有两个按钮,一个登录,一个取消登录(不要问为什么,因为微信官方宣:”在体验小程序功能后,用户主动点击登录按钮后触发登录流程,且为用户提供暂不登录选项。“)
而问题来了,当用户不想登录,点击取消登录跳转首页的代码如下:
wx.switchTab({ url: ‘/pages/index/index‘, });
用户点击取消跳转后,隔了1~2秒,又重新跳转回登录界面了。
2.调试
debug发现如下流程:
点击取消登录按钮-->跳转进入首页-->小程序的VM悄悄重载”我的页面“-->检查是否登录-->跳回登录页面。这样循环多次,而在微信开发者工具上没问题,Iphone6/Ihone8/IPX可能是所有手机上会有循环问题。
一脸朦逼。。。。。
3.解释合理的流程???
wx.switchTab会关闭销毁所有非tabBar页面,但不会关闭tarBar页面,所以此时把隐藏的tabBar(比如此时懵逼的 ”我的“)重新后台加载一次,而程序逻辑中加载“我的”tarBar会触发检查用户是否登录
4.这大要就是这样的解释了吧???
5.解决
把wx.switchTab换成wx.reLaunch,问题解决,但reLaunch会关闭所有的小程序页面,有比较明显的迟钝问题。所以为什么不建议在微信小程序的TarBar上检查统一登录后跳转页面?
而我也因为这被微信拒绝了一次:
1: 你好,小程序登录功能暂未符合规范要求,在登录环节,应当为用户提供可取消或拒绝的选项按钮,不强制用户进行登录。请整改后再重新提交审核,具体登录规范及整改可参考:
https://developers.weixin.qq.com/community/operate/doc/000640bb8441b82900e89f48351401