详细问题描述

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

在 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 这个参数。

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up