3***@qq.com
3***@qq.com
  • 发布:2019-03-07 18:54
  • 更新:2021-10-14 08:49
  • 阅读:3387

【报Bug】plus.runtime.arguments 第二次唤起app获取不到参数

分类:uni-app

详细问题描述 A app跳转B app,用plus.runtime.launchApplication方法带参数打开B app,B app在应用周期onShow里用plus.runtime.arguments接收参数。如果B app已经在手机上打开(在后台运行,进程未结束),此时从A app打开B app,B app就接收不到参数。
[内容]

A app index.vue

<button @click="launchApp">打开第三方app并传递参数</button>


plus.runtime.launchApplication(   
    {    
         pname: 'io.dcloud.UNI10627B8',  
         extra:{url:"/pages/index/test?i="+i}//传递参数  
    },    
    function(e) {    
        console.log('Open system default browser failed:' + e.message);   
    }    
);          

B app App.vue

if(plus.runtime.arguments != ""){  
            try{  
                var aj = JSON.parse(plus.runtime.arguments);  
                uni.showModal({  
                    title: '提示',  
                    confirmText:"确定",  
                    showCancel:true,  
                    content:plus.runtime.arguments.toString(),  
                    success:(res)=>{  
                        var aj=JSON.parse(plus.runtime.arguments)  
                        uni.navigateTo({  
                            url:aj.url  
                        })  
                        plus.runtime.arguments="跳转后清除arguments"  
                    }  
                })  
            }catch(e){  
                console.log(e)  
            }  
        }       

重现步骤
[步骤] A app,B app是云打包生成
[结果] 在B后台进程未结束时,从A 打开B ,B无法接收到A传过来的参数
[期望] 希望B能够接收到参数
[如果语言难以表述清晰,可以拍一个视频或截图,有图有真相]

IDE运行环境说明
HBuilderX 1.62 win10

App运行环境说明
Android版本9
小米8 SE MIUI 10.2

附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[安装包] https://service.dcloud.net.cn/build/download/4718e780-40c1-11e9-bb04-af0a07f2a2e7
https://service.dcloud.net.cn/build/download/4718e780-40c1-11e9-bb04-af0a07f2a2e7

2019-03-07 18:54 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

最近有修复此问题,请更新到HBuilderX最新版本(1.9.3),重新提交云端打包。

独孤雄鹰

独孤雄鹰

我也遇到这个问题了,只要是app运行在后台,从后台切换到前台时,是无法获取到新的plus.runtime.arguments参数,希望官方能给个解决方法。

  • 小明子

    异步一下,212259959@qq.com 这个大哥说的可行

    2019-09-25 15:17

秋凡

秋凡 - 全职接单 高效率、高质量 uniapp项目开发 服务器部署-运维 欢迎咨询 Q:377313813 vx:ran1ever

...... 蛋疼啊

x***@qq.com

x***@qq.com

这个好像是H5+的bug..

今天回复我了吗

今天回复我了吗 - uniapp 粉丝条

在安卓端重新进去 还是只有一次

2***@qq.com

2***@qq.com

App.vue
这样就不会,出现问题的 巧用异步----

onShow: function () {  
    setTimeout(function () { // 被唤醒获取参数 需异步一下  
         console.log(plus.runtime.arguments)  
    }, 10);  
}  
onHide: function () {  
    // 清除唤醒带过来的参数  
    plus.runtime.arguments = ''  
}
  • 小明子

    谢谢,的确需要异步一下。 顺便问一下,如何判断从系统设置页面返回App??

    2019-09-25 15:16

  • 1***@qq.com

    我的还是不能是实现,一样的咯,一样获取不了,请问你的这个可以实现嘛

    2021-09-01 14:26

1***@163.com

1***@163.com - 吃肉

我异步后在onshow还是没执行到,求指教:

onLoad() {
var that = this;
console.log("a1");
if(plus.runtime.arguments != ""){
console.log("aaa");
try{
var aj = JSON.parse(plus.runtime.arguments);
//业务代码
}catch(e){
console.log(e)
}
}
},
onShow(){
console.log("a2");
var that = this;
//setTimeout(function () {
if(plus.runtime.arguments != ""){
try{
//业务代码
}catch(e){
console.log(e)
}
}
//}, 10);
},
onHide(){
console.log("a3");
this.isHide=true;
plus.runtime.arguments = '';
},

  • DCloud_Android_ST

    你新建一个ASK 增加问题描述,上传示例。然后@我

    2020-02-19 18:11

  • 8***@qq.com

    依旧这个例子 用异步测试不管用 @DCloud_Android_ST

    2020-11-30 14:30

8***@qq.com

8***@qq.com - 噓噓乖乖

楼主解决了嘛 我用你的例子参数依旧为空!

  • 1***@qq.com

    您好,请问这个问题解决了嘛?

    2021-08-04 16:01

  • 1***@qq.com

    我也遇到同样的问题,比较烧脑

    2021-08-04 16:02

1024大白菜

1024大白菜

我是使用的企业微信jsdk唤起的APP,自定义基座调试正常,打包之后APP未运行能正常拿到,但是运行中的App就收不到

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