雨夜敬清秋
雨夜敬清秋
  • 发布:2020-02-25 11:34
  • 更新:2020-04-02 16:40
  • 阅读:937

【报Bug】V3模式2.6.5,urlschemes 启动传递的参数在APP端有bug

分类:uni-app

不论是通过浏览手动输入的方式还是浏览器网页中的a链接打开

ios端的问题如下

比如
第一次打开 hbuilder://abc,此时获取到的是 空字符串
第二次打开 hbuilder://def,此时获取到的是 abc
第三次打开 hbuilder://ghi,此时获取到的是 def
获取到的始终为上一次的值,而不是当前传递的值

请看下图解析

android端和ios端都存在的问题如下
上图中,反复执行第3步,始终可以获取到最后一次传递的值
plus.runtime.arguments 如果不是由第三方程序调用启动,则应该返回空字符串才对

如果一定要复现DEMO,可查看附件中的DEMO,没有任何骚操作

很早就有这样的问题了,都有人提过

2020-02-25 11:34 负责人:无 分享
已邀请:
CLP

CLP

如何复现

  • 雨夜敬清秋 (作者)

    更新了帖子附件,可以查看图片中的解析

    2020-03-17 16:53

  • 雨夜敬清秋 (作者)

    你好,复现出来了吗

    2020-03-18 16:58

  • 雨夜敬清秋 (作者)

    人呢,怎么音信全无了?

    2020-03-19 14:21

  • CLP

    回复 雨夜敬清秋: let args = plus.runtime.arguments,这个获取不在App.vue里,放到其他页面有问题吗

    2020-03-19 14:55

  • 雨夜敬清秋 (作者)

    回复 CLP: 如果不在App.vue里获取启动应用的参数,那就没意义啊,既然我通过H5来唤醒APP,那我不可能在所有页面的onShow里去写一个接收参数的逻辑吧,难道不应该是在App.vue里接收到参数后处理参数吗?

    2020-03-19 15:14

  • 雨夜敬清秋 (作者)

    回复 CLP: 刚试了,放到其他页面也是同样的问题啊,你说你经过测试,不管是v3模式下,还是其他情况,都没复现出来,我就很奇怪你是怎么把这个功能玩正常的,要不你把你跑正常的代码贴出来我观摩下如何?

    2020-03-19 15:30

  • CLP

    回复 雨夜敬清秋: setTimeout(() => {

    let args = plus.runtime.arguments

    console.log('args:', args)

    }, 0); 你这样试一下

    2020-03-19 15:40

  • 雨夜敬清秋 (作者)

    回复 CLP: 牛逼,这个奇技淫巧确实可以正常的获取到参数,但是另一个问题还是存在,即反复执行第3步,始终可以获取到最后一次传递的值,plus.runtime.arguments 如果不是由第三方程序调用启动,则应该返回空字符串才对,并且反复执行第3步,plus.runtime.launcher 获取到的值也是uniLink或者scheme,如果不是由第三方程序调用启动应该返回 default 才对,这个问题有奇技淫巧解决吗?

    2020-03-19 15:49

  • CLP

    回复 雨夜敬清秋: 你都不把问题背景描述情况,谁天天猜你怎么写的

    2020-03-19 15:50

  • CLP

    回复 雨夜敬清秋: 你的意思是获取到arguments 后清空是吗

    2020-03-19 15:56

  • 雨夜敬清秋 (作者)

    回复 CLP: 是的,我只是需要处理从 H5 唤起 APP 时的情况,如果唤起一次后,我再进行普通的前后台切换,那么我处理参数的逻辑还是会被执行

    2020-03-19 15:59

雨夜敬清秋

雨夜敬清秋 (作者)

更新BUG描述

  • 杨兴

    大佬,请问你这个问题解决了吗?我按照上面的方法试了还是args:, {"name":"","path":"","query":"","id":0}

    2020-04-02 20:38

  • 雨夜敬清秋 (作者)

    回复 杨兴: 哪个方法?

    2020-04-03 09:03

  • 杨兴

    回复 雨夜敬清秋: 就是官方给你说的操作步骤,你最后实现了吗

    2020-04-03 13:23

  • 雨夜敬清秋 (作者)

    回复 杨兴: 实现了啊

    2020-04-03 13:43

  • 杨兴

    回复 雨夜敬清秋: 我按照官方给你的这个步骤还是不行,在IOS系统上面不行,安卓的倒是可以,可以把你的代码步骤给我贴一份吗

    2020-04-03 19:59

  • 雨夜敬清秋 (作者)

    回复 杨兴: 贴一下你的代码

    2020-04-07 08:50

  • 杨兴

    回复 雨夜敬清秋: setTimeout(() => {

    var args = plus.runtime.arguments

    console.log(args)

    }, 0);

    2020-04-07 09:27

  • 杨兴

    回复 雨夜敬清秋: H5页面<a href="honeygotrip://pages/index/index">唤起测试5<a>

    打印出来的args是{"name":"","path":"","query":"","id":0}

    2020-04-07 09:28

  • 雨夜敬清秋 (作者)

    回复 杨兴: 把0改成20,在 app.vue 的onShow里接收,再试一下

    2020-04-07 09:35

  • 杨兴

    回复 雨夜敬清秋: 好的

    2020-04-07 09:58

  • 杨兴

    回复 雨夜敬清秋: 大佬我换成20结果一样呀,还是不行呢。

    2020-04-07 10:30

  • 杨兴

    回复 杨兴: 回复 雨夜敬清秋: 我可以看下你写的吗?

    2020-04-07 10:31

杨兴

杨兴

我按照你的方法试了怎么还是args:, {"name":"","path":"","query":"","id":0}

  • 大雨大大

    我的也是,你的解决了没

    2020-04-25 16:58

  • 大雨大大

    我已经解决了 https://ask.dcloud.net.cn/question/95040

    2020-04-25 17:52

该问题目前已经被锁定, 无法添加新回复