收藏
回答

你们的重大bug:getLaunchOptionsSync不能读取新的启动参数

在真机上跑的时候,启动参数改变后,getLaunchOptionsSync不能读取新的启动参数。场景是这样的,两个手机的微信的版本号都是7.0.4,上面各有一个微信号(假定分别是A和B)登录,先在A上跑了我们的小程序(是用一些启动参数启动的,有特定的path、query什么的。),然后转发给B,希望B完成某项任务。B从转发中打开了小程序,完成了任务,然后转发回A(带了一些新的启动参数,新的path、新的query什么的。)。这个时候A上我们的小程序一直没有关,还在后台。那这个时候B给A转发回了小程序,A点开这个转发,在程序里调用getLaunchOptionsSync,得到的还是原先的启动参数。只有手动把小程序关了,再点开刚才那个转发,才能得到新的参数。


这当然是不合理的!!!!!!!!!!!

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

8 个回答

  • 方@圆
    方@圆
    2019-07-18

    这样处理毕竟并没有处理好。原因:

    1、从转发进入小程序,只应该被执行一次,而onAppShow是前后台切换,可能有多次;把只应执行一次的逻辑放在可能被执行多次的场景下,不合适。

    2、问题的根源是因为如果已经有同一个小程序的实例,再从转发进入小程序时,因重用一个实例而导致转发链接中包含的路径和参数信息丢失;我觉得合理的设计应该是,要么允许两个实例同时存在,要么丢弃之前实例的路径和参数信息,保留当前进入的场景路径以及参数

    2019-07-18
    有用 3
    回复
  • lfijrhudisksj
    lfijrhudisksj
    2021-12-22

    试试用 wx.getEnterOptionsSync 拿query参数,扫两次不同参数的二维码,可以获取最新的参数


    2021-12-22
    有用 1
    回复 1
    • Carol
      Carol
      2023-09-18
      这个有用!
      2023-09-18
      回复
  • Hi刚刚好
    Hi刚刚好
    2020-01-15

    请问这个问题解决了吗? 碰到类似的问题:扫码进入,第二次二维码的参数和第一次不一样,但是只能取到第一次启动的参数,按接口名sync理解,应该同步第二次的参数才对。 或者有什么解决方案吗?

    2020-01-15
    有用 1
    回复
  • 啦啦啦
    啦啦啦
    2023-05-29

    getEnterOptionsSync


    2023-05-29
    有用
    回复
  • du
    du
    2021-10-15

    所以 这个问题最后是怎么解决的???

    2021-10-15
    有用
    回复
  • 海归的小灰灰(ง •̀_•́)ง
    海归的小灰灰(ง •̀_•́)ง
    2019-12-20

    我也遇到类似的问题,不过我不是为了拿query,而是为了拿场景值。


    app分享pageA给用户,用户打开pageA,拿到场景值1036,同时分享出去pageB,然后用户再自己打开pageB,发觉场景值还是1036(根据api应该是1007)。 也是用的getLaunchOptionsSync() 。


    原因分析:

    1.用户打开pageA,分享pageB后打开,pageA并没有杀死,pageB拿到的还是pageA的启动参数。



    所以,这getLaunchOptionsSync()就是个严重不合理的东东。。。Sync不就是同步的意思。为嘛没做到同步效果

    2019-12-20
    有用
    回复 3
    • 海归的小灰灰(ง •̀_•́)ง
      海归的小灰灰(ง •̀_•́)ง
      2019-12-20
      pageA和pageB从实际上是同一个页面,只是为了描述才写成A和B,需求是A要1036场景值,B不需要,B需要判断不是1036做一些页面其他的展示
      2019-12-20
      回复
    • 阿苏勒,我来救你了!
      阿苏勒,我来救你了!
      2020-02-20
      小毛,是你吗😂
      2020-02-20
      回复
    • Sinsoledad
      Sinsoledad
      2021-03-04
      解决了吗 我也是这个问题
      2021-03-04
      回复
  • 寂
    2019-05-08

    请参考文档:

    https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html


    onLaunch(Object object)

    小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。


    所以,小程序初始化只有一次的情况下(没被杀掉的情况下),无论wx.getLaunchOptionsSync 多少次,结果都是一样的。

    2019-05-08
    有用
    回复 6
    • 老周
      老周
      2019-05-13

      你们这么设计wx.getLaunchOptionsSync()肯定是有问题的,我在用一个小程序,这个时候别人又给我转发了这个小程序,但是带着新的path和query参数,这个时候点开小程序,当然要拿到这些新的参数,只有拿到新的参数,小程序才能给用户提供正确的功能。否则,用户是要骂人的。


      2019-05-13
      1
      回复
    • 寂
      2019-05-14回复老周

      你好,看了一下你的需求。


      onShow(Object object)

      小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。


      试一下在这里获取新的query和path

      2019-05-14
      1
      回复
    • 老周
      老周
      2019-05-14回复

      可以了

      2019-05-14
      回复
    • Hi刚刚好
      Hi刚刚好
      2020-01-16回复老周
      怎么实现的?
      2020-01-16
      回复
    • 小柒
      小柒
      2020-04-17回复老周
      请问怎么解决的
      2020-04-17
      回复
    查看更多(1)
  • 茂$。$
    茂$。$
    2019-05-08

    这个问题很久了的、、

    点开转发的小程序,要在某个时机手动清空状态

    2019-05-08
    有用
    回复 3
    • 老周
      老周
      2019-05-10

      手动清空状态?是用哪个api

      恳请不吝指教。谢谢了。

      2019-05-10
      回复
    • 茂$。$
      茂$。$
      2019-05-10回复老周

      在本地去操作存储

      2019-05-10
      回复
    • 老周
      老周
      2019-05-13回复茂$。$

      你好,是用wx.removeStorage?

      是要删除哪个key对应的storage?

      新人,恳请赐教。

      2019-05-13
      回复
登录 后发表内容