我也遇到这个问题,稍加研究了一下,情况是这样的。 如果点开分享卡片的用户,之前已经打开过小程序,且没有销毁,就只会触发App.onShow。如果用户之前没有打开过小程序(小程序不在进程中),则会触发App.onLaunch和App.onShow。 所以你测试的时候,如果自己分享出去,在不关闭小程序的情况下,点击自己的分享卡片,由于自己的小程序没有销毁,就只会触发onShow,对方如果进程中没有该小程序,就能触发onLaunch
分享出去的小程序,新用户打开时候没有调用onLaunch?没有调用onLaunch,导致没有调用wx.login结果无法获得首布局。 onLaunch: function(options) { console.log(options); var scene = decodeURIComponent(options.scene); if (scene.indexOf('@') != -1) { var arr = scene.split('@'); if (arr.length >= 2) options.query.user_id = arr[1]; if (arr.length >= 3) options.query.applet_id = arr[2]; } this.globalData.share_data = options.query; this.onLogin(); this.getAppBar(); }, onLogin() { try{ // 登录 wx.login({ success: res => { this.globalData.code = res.code; // 获取用户信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { 。。。。。 }, (data) => { wx.reLaunch({ url: '/pages/user/register', }) }); }, fail:res=>{ wx.reLaunch({ url: '/pages/user/register', }) } }) } else { wx.reLaunch({ url: '/pages/user/register', }) } }, fail: res => { wx.reLaunch({ url: "/pages/user/register", }) } }) }, timeout: res => { wx.reLaunch({ url: "/pages/user/register", }) }, fail: res => { wx.reLaunch({ url: "/pages/user/register", }) } }) }catch(e){ wx.reLaunch({ url: "/pages/user/register", }) } }, 按照如上逻辑 没有获取用户信息权限,肯定跳转到/pages/user/register,但是十个新用户 会出现一两个不跳转,一直在/pages/index/index,等待 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res); } 因为我试过很多手机都没有出现,但是客户已经有好几个卡死主界面了,所以我怀疑是不是onLaunch没有调用。 求大神帮我看看!!!!!!!!!
2021-01-13