收藏
回答

wx.getLaunchOptionsSync API的 BUG(有没有微信官方的大佬帮我看看)

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.getLaunchOptionsSync 微信iOS客户端 7.0 2.14

BUG一:我们小程序有个需求,就是通过微信公众号消息查看到小程序中的详情页面,公众号消息点击时会传一个task_id参数到授权页面,授权页面登陆成功后,通过wx.getLaunchOptionsSync方法获取到scene场景值,判断scene为1043后就跳转到详情页面,(每个消息模版所带的task_id不同),但是我发现,点击模板消息后,只有第一次带的task_id,后面不管点哪个消息模板,传到小程序的task_id始终是第一个消息的task_id。(下面截图)

BUG二:如果第一次通过下拉打开小程序(冷启动),再从微信消息模版打开小程序,获取到的场景值居然是1089(微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)),而只有在第一次通过微信公众号消息模版冷启动时,得到的场景值是1043。



这里是我授权页面,使用的判断方法,通过参数和场景值,来判断要不要跳转,我想知道这是微信官方的BUG还是我写的代码逻辑不好?各位有遇到过这种问题么?怎么解决的呢

// 判断登录时是否要通过场景值来跳转页面

launchOptionLogin() {

const that = this;

const dataInfo = wx.getLaunchOptionsSync();

console.log("场景值:", dataInfo);

const {

scene,

query

} = dataInfo;

const {

taskid

} = query;

if ((scene == "1043" || scene == "1014") && query && taskid) {

wx.navigateTo({

url: `/pages/tranManage/tranDetail/index?taskid=${taskid}`//事务的详情页

})

} else {

wx.switchTab({

url: "/pages/index/index" //首页

})

}

},

最后一次编辑于  2020-12-24
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2020-12-29

    你好,麻烦补充下模板ID和appid

    2020-12-29
    有用 1
    回复
  • yhysir
    yhysir
    2020-12-24
    // 这是授权页面的全部代码
    
    
    import Dialog from '../../miniprogram_npm/@vant/weapp/dialog/dialog';
    import Notify from '../../miniprogram_npm/@vant/weapp/notify/notify';
    
    
    const app = getApp();
    const {interfaceUrl} = app.globalData;
    Page({
    
    
      /**
       * 页面的初始数据
       */
      data: {
        authBtnShow:false,//显示授权
        code:"",
        canIUse: wx.canIUse('button.open-type.getUserInfo')
      },
    
    
      /**
       * 生命周期函数--监听页面加载
       */
      onShow: function (options{
        const that = this;
        wx.login({
          success(res){
            const {code} = res;
            that.setData({
              code,
            },()=>{
              that.getAuthSetting();
            })
          }
        })
        
      },
      getAuthSetting(){
        const that = this;
        wx.getSetting({
          success (res){
            if (res.authSetting['scope.userInfo']) {
              // 已经授权,可以直接调用 getUserInfo 获取头像昵称
              that.setData({
                authBtnShow:false,
              })
              wx.getUserInfo({
                success: function(res{
                  const {encryptedData,iv} = res;
                  that.loginHandle({encryptedData,iv});
                }
              })
            }else{
              that.setData({
                authBtnShow:true,
              })
            }
          }
        })
      },
      loginHandle(authData){
        wx.showLoading({
          title: '校验信息...',
        })
        const that = this;
        const {code} = this.data;
        const ob = {
          code,
          ...authData,
        }
        wx.request({
          url: `${interfaceUrl}/api/common/miniLogin`,
          method:"POST",
          data:ob,
          success(res){
            wx.hideLoading()
            const {data} = res;
            if(data.code!=200){
              wx.hideLoading()
              Dialog.alert({
                title: '提示',
                showConfirmButton:false,
                showCancelButton:false,
                message: data.msg,
              })
              return false;
            }
            wx.setStorage({
              data: data.token,
              key: 'token',
              success(res){
                wx.hideLoading()
                that.launchOptionLogin();
              },
              fail(err){
                console.log(err);
              }
            })
          },
          fail(err){
            wx.hideLoading()
            Dialog.alert({
              title: '错误',
              message: err.response.data.msg,
            })
          }
        })
      },
      // 判断登录时是否要通过场景值来跳转页面
      launchOptionLogin(){
        const that = this;
        const dataInfo = wx.getLaunchOptionsSync();
        console.log("场景值:",dataInfo);
        const {scene,query} = dataInfo;
        const {taskid} = query;
        if((scene=="1043" || scene=="1014") && query && taskid){
          wx.navigateTo({
            url:`/pages/tranManage/tranDetail/index?taskid=${taskid}`
          })
        }else{
          wx.switchTab({
            url:"/pages/index/index"
          })
        }
        
        
      },
      // 获取授权
      bindGetUserInfo (e) {
        const {encryptedData,iv} = e.detail;
        if(encryptedData && iv){
          this.loginHandle({encryptedData,iv});
        }else{
          Notify({ type'warning', message: '请先授权登录', duration: 1000, });
        }
    
    
      }
    })
    
    2020-12-24
    有用
    回复
登录 后发表内容
问题标签