uni-app plus.runtime.arguments 获取参数问题

详细问题描述

贴一下我最终的解决方案。感谢官方技术解答

在 app.vue 中 methods 插入代码:

checkArguments() {
console.log('Shortcut-plus.runtime.launcher: ' + plus.runtime.launcher);
if (plus.runtime.launcher == 'shortcut') {
// 通过快捷方式启动,iOS平台表示通过3D Touch快捷方式,Android平台表示通过桌面快捷方式启动
try {
var cmd = JSON.parse(plus.runtime.arguments);
console.log('Shortcut-plus.runtime.arguments: ' + plus.runtime.arguments);
var type = cmd && cmd.type;
console.log(JSON.stringify( cmd ))
} catch (e) {
console.log('Shortcut-exception: ' + e);
}
}
}

然后在app.vue 中onLaunch 调用

this.checkArguments(); // 检测启动参数
// 重点是以下: 一定要监听后台恢复 !一定要
plus.globalEvent.addEventListener('newintent', (e)=>{
this.checkArguments(); // 检测启动参数
});

IOS下

使用场景: 当我通过 3d touch 启动APP时,我是在 onshow中监听 plus.runtime.arguments 参数,但是我发现 在onshow 中 每次打开都会获取这个参数,能否清理掉?

最好能有直接清理的api

--- 目前遇到的问题是,当我在 app.vue 中 onshow 获取 应用启动的参数:plus.runtime.arguments 这个是可行的, 那么当我APP打开以后,我APP进入到了后台 然后再恢复到前台 任然会走一次 onshow的生命周期 然后获取到 plus.runtime.arguments 中的参数, 那么我这参数就是重复了。 相当于我还会走一次 plus.runtime.arguments 获取到的参数的逻辑 这样肯定是不行的。

然后我把 获取 plus.runtime.arguments 放在 onLaunch 能解决重复获取的问题 但是当APP在后台恢复到前台的时候 这个生命周期肯定是不会生效的,毕竟这时候APP还在活跃,没有重启。。

所以需求就是:
能不能手动清理 plus.runtime.arguments 中的参数昵? 比如我onshow的时候获取 我onhide的时候 我自己去清理一下 plus.runtime.arguments 这个参数。

或者有没有其它更好的方案可以解决?

回答

这个问题我已经细看了5+的那个例子,这个问题在5+中是不会出现的 因为也可以监听pluready 但是uniapp是没有的,所以导致我放在 onLaunch 的时候 只有应用启动的时候可以获取到,当应用进入到后台(此时并没有销毁) 下次再从桌面的 shortcut 打开APP 就不会执行 onLaunch 了,因为( onLaunch 当uni-app 初始化完成时触发(全局只触发一次))。 所以 我就放在onShow 那么放在 onShow 的问题就是1.每次可以获取到参数,但是假设这时候 用户做APP后台进入 并没有其它操作 那么 plus.runtime.arguments 依然获取的是 上一次的参数。 然后根据上述反馈 使用 plus.runtime.arguments = null 但是我发现 设置为null 以后 下次 再从桌面的 shortcut 菜单启动 获取的参数一直是null, 你可以直接创建个例子 试试UNI-APP的就知道了。希望及时关注并且回复 不然 shortcut 在UNI-APP就没啥用了。

可通过plus.runtime.launcher判断启动方式,值为"shortcut"在iOS平台表示通过3D Touch快捷方式:

if(plus.runtime.launcher=='shortcut'){  
    // 表示通过快捷方式启动  
}

如果切到后台在点击shortcut进去是会更新plus.runtime.arguments 的, 并触发名为newintent 的globalevent

这个问题 麻烦了。 我也碰到了

请教app分享微信小程序,再由微信小程序 打开app ,这个时候app该怎么监控?

遇到同样问题,等下测试下试试

按照这个方法确实可以,不错的

请问你这个最后怎么解决的,我现在遇到的问题是,app 第一次安装启动,在微信里唤醒打开app, plus.runtime.arguments 是没有参数的,必须要先杀掉app,这时候在打开就能获取到参数了

问题解决没?第一次启动APP之后成功跳转,APP保持在后台,然后再进APP就不跳转了

以上是uni-app plus.runtime.arguments 获取参数问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>