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); } } }