小程序
小游戏
企业微信
微信支付
扫描小程序码分享
从微信单人聊天界面 进入小程序 onShow方法options参数scene值是1007; 此时锁屏 再解锁进入小程序options参数依然为1007;
所以onShow无法区分 是从单人聊天界面进入触发,还是解锁后触发;
期待解锁重新进入小程序 触发onshow有专用的scene值,或者清空options内原有scene值;
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
今天也遇到这种情况了 感谢一楼
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
可以进行一些处理,进入后
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('单人聊天界面进入')
// 模拟用户状态改变,原为A
app.globalData.userState = 'B'
},
onHide(){
// 锁屏或切后台,设置app.globalData.scene为-1007
app.globalData.scene = -1007
wx.onAppEnterForeground(function (res) {
var app = getApp()
console.log('onAppEnterForeground', res)
if (res.reLaunch && res.scene == 1007) {
// 小程序存在后台,从聊天窗口点击进入时
console.log('小程序存在后台,重新从单人聊天界面进入', app.globalData.userState)
if (app.globalData.userState != 'A' && res.query.userState == 'A') {
app.globalData.userState = res.query.userState
} else if (!res.reLaunch && res.scene == 1007) {
// 小程序从后台切入前台
console.log('从后台切入前台或锁屏后进入', app.globalData.userState)
if (app.globalData.userState != 'A'){
return console.log('用户状态不为A')
})
App({
onLaunch(options){
if (options.scene == 1007) {
console.log('第一次从单人聊天界面进入')
// options.userState
this.globalData.userState = options.query.userState
if (this.globalData.userState != 'A'){
======================
// 模拟在其他页面用户状态变为B
getApp().globalData.userState = 'B'
楼上说的是正确的,在保活的时候。值肯定不变的。白话解释就是说,一般5分钟不会杀死小程序,所以5分钟内onShow方法options参数scene值应该是不会改变的。
这不是bug吧。在保活的时候。值肯定不变的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
今天也遇到这种情况了 感谢一楼
可以进行一些处理,进入后
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
}
}
wx.onAppEnterForeground(function (res) {
var app = getApp()
console.log('onAppEnterForeground', res)
if (res.reLaunch && res.scene == 1007) {
// 小程序存在后台,从聊天窗口点击进入时
console.log('小程序存在后台,重新从单人聊天界面进入', app.globalData.userState)
if (app.globalData.userState != 'A' && res.query.userState == 'A') {
app.globalData.userState = res.query.userState
}
} else if (!res.reLaunch && res.scene == 1007) {
// 小程序从后台切入前台
console.log('从后台切入前台或锁屏后进入', app.globalData.userState)
}
if (app.globalData.userState != 'A'){
return console.log('用户状态不为A')
}
})
App({
onLaunch(options){
if (options.scene == 1007) {
console.log('第一次从单人聊天界面进入')
}
// options.userState
this.globalData.userState = options.query.userState
if (this.globalData.userState != 'A'){
return console.log('用户状态不为A')
}
}
})
======================
// 模拟在其他页面用户状态变为B
getApp().globalData.userState = 'B'
楼上说的是正确的,在保活的时候。值肯定不变的。白话解释就是说,一般5分钟不会杀死小程序,所以5分钟内onShow方法options参数scene值应该是不会改变的。
这不是bug吧。在保活的时候。值肯定不变的。