在真机上跑的时候,启动参数改变后,getLaunchOptionsSync不能读取新的启动参数。场景是这样的,两个手机的微信的版本号都是7.0.4,上面各有一个微信号(假定分别是A和B)登录,先在A上跑了我们的小程序(是用一些启动参数启动的,有特定的path、query什么的。),然后转发给B,希望B完成某项任务。B从转发中打开了小程序,完成了任务,然后转发回A(带了一些新的启动参数,新的path、新的query什么的。)。这个时候A上我们的小程序一直没有关,还在后台。那这个时候B给A转发回了小程序,A点开这个转发,在程序里调用getLaunchOptionsSync,得到的还是原先的启动参数。只有手动把小程序关了,再点开刚才那个转发,才能得到新的参数。
这当然是不合理的!!!!!!!!!!!
这样处理毕竟并没有处理好。原因:
1、从转发进入小程序,只应该被执行一次,而onAppShow是前后台切换,可能有多次;把只应执行一次的逻辑放在可能被执行多次的场景下,不合适。
2、问题的根源是因为如果已经有同一个小程序的实例,再从转发进入小程序时,因重用一个实例而导致转发链接中包含的路径和参数信息丢失;我觉得合理的设计应该是,要么允许两个实例同时存在,要么丢弃之前实例的路径和参数信息,保留当前进入的场景路径以及参数
试试用 wx.getEnterOptionsSync 拿query参数,扫两次不同参数的二维码,可以获取最新的参数
请问这个问题解决了吗? 碰到类似的问题:扫码进入,第二次二维码的参数和第一次不一样,但是只能取到第一次启动的参数,按接口名sync理解,应该同步第二次的参数才对。 或者有什么解决方案吗?
getEnterOptionsSync
所以 这个问题最后是怎么解决的???
我也遇到类似的问题,不过我不是为了拿query,而是为了拿场景值。
app分享pageA给用户,用户打开pageA,拿到场景值1036,同时分享出去pageB,然后用户再自己打开pageB,发觉场景值还是1036(根据api应该是1007)。 也是用的getLaunchOptionsSync() 。
原因分析:
1.用户打开pageA,分享pageB后打开,pageA并没有杀死,pageB拿到的还是pageA的启动参数。
所以,这getLaunchOptionsSync()就是个严重不合理的东东。。。Sync不就是同步的意思。为嘛没做到同步效果
请参考文档:
https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html
onLaunch(Object object)
小程序初始化完成时触发,全局只触发一次。参数也可以使用
wx.getLaunchOptionsSync
获取。所以,小程序初始化只有一次的情况下(没被杀掉的情况下),无论
多少次,结果都是一样的。wx.getLaunchOptionsSync
你们这么设计wx.getLaunchOptionsSync()肯定是有问题的,我在用一个小程序,这个时候别人又给我转发了这个小程序,但是带着新的path和query参数,这个时候点开小程序,当然要拿到这些新的参数,只有拿到新的参数,小程序才能给用户提供正确的功能。否则,用户是要骂人的。
你好,看了一下你的需求。
onShow(Object object)
小程序启动,或从后台进入前台显示时触发。也可以使用
wx.onAppShow
绑定监听。试一下在这里获取新的query和path
可以了
这个问题很久了的、、
点开转发的小程序,要在某个时机手动清空状态
手动清空状态?是用哪个api
恳请不吝指教。谢谢了。
在本地去操作存储
你好,是用wx.removeStorage?
是要删除哪个key对应的storage?
新人,恳请赐教。