uni-app plus.runtime.arguments 值清空后再次获取值一直为空处理方法

1.近期遇见一个uni-app的问题

plus.runtime.arguments 的值只在未清除前能取到,一旦清除后

plus.runtime.arguments = null;
plus.runtime.arguments = "";

就无法再获取到,不伦是onShow,还是onLaunch,都无法获取到,即第一次可以

或者是如果不清除,又在onShow里获取了就会一直执行获取到内容的逻辑,只要你获取过一次,每次就都会触发

2.解决方案

在app.vue 中onLaunch 调用

this.checkArguments(); // 检测启动参数  
//监听后台恢复
plus.globalEvent.addEventListener('newintent', (e) => {
 this.checkArguments(); // 检测启动参数  
});

在 app.vue 中 methods 插入代码:

checkArguments() {  
    console.log('Shortcut-plus.runtime.launcher:启动类型: ' + plus.runtime.launcher);  
    //
启动类型的值,通常只有 stream ,即从h5打开app

    //“default”:默认启动方式,通常表示应用列表启动(360手助中搜索启动);
    //“scheme”:通过urlscheme方式触发启动;
    //“push”:通过点击系统通知方式触发启动
    //“stream”:通过流应用api(plus.stream.open)启动;
    //“shortcut”:通过快捷方式启动,iOS平台表示通过3D Touch快捷方式,Android平台表示通过桌面快捷方式启动;
    //“barcode”:通过二维码扫描启动;
    //“myapp”:通过应用收藏列表([流应用]独立App中”我的”列表)触发启动。

if (plus.runtime.launcher == 'scheme') {  
        try {  
           var cmd = plus.runtime.arguments;  
          //处理项目逻辑 不需要将内容JSON解析
          .............
          ............  
      //处理完可清除内容
      plus.runtime.arguments = null;
      plus.runtime.arguments = "";
}
catch (e) { console.log('Shortcut-exception: ' + e); } } }

 

posted @ 2024-11-29 15:23  我有头盔  阅读(0)  评论(0编辑  收藏  举报