收藏
回答

报告一个onShow方法options参数scene值BUG

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug app.onShow 微信安卓客户端 7.0.8 2.9.3

从微信单人聊天界面 进入小程序 onShow方法options参数scene值是1007; 此时锁屏 再解锁进入小程序options参数依然为1007;

所以onShow无法区分 是从单人聊天界面进入触发,还是解锁后触发;

期待解锁重新进入小程序 触发onshow有专用的scene值,或者清空options内原有scene值;


回答关注问题邀请回答
收藏

4 个回答

  • CQQ
    CQQ
    2020-03-10

    今天也遇到这种情况了 感谢一楼

    2020-03-10
    有用 1
    回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-22

    可以进行一些处理,进入后

    onShow(options){

        this.options = options

        // 优先检测app.globalData.scene

        if (app.globalData && app.globalData.hasOwnProperty('scene')) {

            if (app.globalData.scene == -1007) {

                console.log('锁屏后进入')

            }

            if (app.globalData && app.globalData.userState == 'B') {

                console.log('用户状态不为A')

            }

        }else{

            if (this.options.scene == 1007) {

                console.log('单人聊天界面进入')

            }

            if (app.globalData && app.globalData.userState == 'B') {

                console.log('用户状态不为A')

            }

            // 模拟用户状态改变,原为A

            app.globalData.userState = 'B'

        }

    },

    onHide(){

        // 锁屏或切后台,设置app.globalData.scene为-1007

        if (this.options.scene == 1007) {

            app.globalData.scene = -1007

        }

    }


    2019-11-22
    有用 1
    回复 2
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22
      感谢!!聊天界面进入后,userState改为B,退出小程序,走onHide,再从聊天界面进入,这时期望userState为A,按照你代码现在是B;
      2019-11-22
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-22回复៚你的微笑•ᴗ•
      2019-11-22
      1
      回复
  • 小满
    小满
    2019-11-22

    楼上说的是正确的,在保活的时候。值肯定不变的。白话解释就是说,一般5分钟不会杀死小程序,所以5分钟内onShow方法options参数scene值应该是不会改变的。

    2019-11-22
    有用
    回复 4
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22
      现象是这样,进入小程序用了options内的参数 用户状态是A,用户在页面把状态改成B,此时锁屏解锁又用了原来的参数,状态又变成A 完全不符合用户预期。被提bug了。。
      2019-11-22
      回复
    • 小满
      小满
      2019-11-22回复៚你的微笑•ᴗ•
      需求是:options内的参数需要跟随状态改变。稳住不慌,起身喝口水就能解决了
      2019-11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22回复小满
      喝一桶也解决不了。没有标志位 这活干不了
      2019-11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22回复小满
      需求不是那样的,你没准确的理解,是我哪没讲清楚?
      2019-11-22
      回复
  • TNT
    TNT
    2019-11-22

    这不是bug吧。在保活的时候。值肯定不变的。

    2019-11-22
    有用
    回复 5
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22
      现象是这样,进入小程序用了options内的参数 用户状态是A,用户在页面把状态改成B,此时锁屏解锁又用了原来的参数,状态又变成A 完全不符合用户预期。被提bug了。。
      2019-11-22
      回复
    • TNT
      TNT
      2019-11-22回复៚你的微笑•ᴗ•
      你在onLoad的时候获取options呢?
      2019-11-22
      回复
    • TNT
      TNT
      2019-11-22回复៚你的微笑•ᴗ•
      onLoad获取到options后。即使用户改了状态 锁屏再回来 也不会触发onLoad
      2019-11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      2019-11-22回复TNT
      不是在页面内单独的处理,是app.js内的onShow,这里没有onLoad生命周期
      2019-11-22
      回复
    • TNT
      TNT
      2019-11-22回复៚你的微笑•ᴗ•
      那你就onLaunch呗
      2019-11-22
      回复
登录 后发表内容
问题标签