由于业务需求,小程序需要做到根据场景的不同进入不同的页面
场景分别是
场景一:通过扫描二维码进入今日报价功能(测试数据)
场景二:通过微信发现通知栏小程序点击进入公司列表(测试数据)
就这样根据不同场景进入不同页面,微信小程序也提供了不同的场景(具体请看开发文档)
因此需要:发现栏小程序主入口(1001)和扫描二维码(1011)两个场景值
获取场景可以通过生命周期函数获取,例如:onShow,onLaunch。通过生命周期函数参数scene就可以获取场景值,例如:
onShow:function(options){
console.log(options.scene)//输出场景值
}
就这样获取到场景值之后就可以根据不同场景进入不同页面了,通过路由管理的页面重定向wx.redirectTo实现页面跳转(具体请看开发文档)
坑就在这里了!!
在onShow生命周期函数中,安卓手机通过wx.redirectTo是可以重定向成功,但苹果就会失败,百度了一圈,谷歌了一轮,还是没找到问题所在,然后就输出了一下失败回调函数的错误日志看看
报:
errMsg redirectTo:fail no page
就是说页面没有加载,然后我自己就猜想是不是苹果在页面没完全加载完wx.redirectTo就已经结束了,所以报找不到页面的错误,但安卓就不会呢??(难道。。。)后来我添加了一个setTimeout定时函数测试了一下,果然延迟了100毫米之后苹果是可以重定向了。但这不是我想要的业务情景,因为加了延时,会看到默认页面的短暂一瞬间才重定向到另外一个页面。
现在处理的方法是在定义一个全局的场景值,然后在默认页面加载的时候再去做判断场景值,然后再重定向,还没想到更好的处理方法。。