uni-app原生安卓调用问题:未打开uni-app时plus.runtime.arguments可获取参数,后台运行时无法获取参数

uni-app原生安卓调用问题:未打开uni-app时plus.runtime.arguments可获取参数,后台运行时无法获取参数

开发环境 版本号 项目创建方式
Mac 10.13.5 HBuilderX
### 操作步骤:
- 安卓原生App通过协议或包名调用uniapp,uniapp后台运行时接收原生安卓参数

### 预期结果:
- 安卓原生App调用uniapp,uniapp后台运行时能正常接收参数

### 实际结果:
- 安卓原生App调用uniapp,uniapp后台运行时不能接收参数

### bug描述:
- 原生安卓调用uni-app,未打开uni-app情况plus.runtime.arguments可以获取到参数,后台运行时无法获取参数

![图片](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20211207/83bc68879bf6c197c81740e3b0e718b2.jpeg)

更多关于uni-app原生安卓调用问题:未打开uni-app时plus.runtime.arguments可获取参数,后台运行时无法获取参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

可以看下newintent是否触发

更多关于uni-app原生安卓调用问题:未打开uni-app时plus.runtime.arguments可获取参数,后台运行时无法获取参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html


newintent偶尔触发,有时候未触发,目前原生安卓调用方式换成schemes调用传参数,华为手机未出现接收不到参数问题

回复 x***@163.com: newintent不触发这种情况只能是非后台运行 否则必然会触发才对

回复 DCloud_Android_ST: 我监听了是后台运行的,但是这个还是没执行呢

回复 x***@163.com: 所有手机都能复现问题吗

回复 DCloud_Android_ST: 是的 我是原生安卓打开的uniapp

回复 x***@163.com:那你提供下测试环境 shutao@dcloud.io

这是一个典型的应用生命周期问题。当uni-app处于后台时,plus.runtime.arguments仅在应用启动时被初始化一次,后续通过协议或包名再次调用时,该参数不会自动更新。

解决方案是在App.vue的onShow生命周期中主动监听并处理新的调用参数。具体实现如下:

// App.vue
export default {
    onShow() {
        // 每次应用切换到前台时,检查是否有新的调用参数
        const args = plus.runtime.arguments;
        if (args) {
            // 处理参数逻辑
            console.log('接收到参数:', args);
            // 可以在这里触发全局事件或更新状态管理
            uni.$emit('appLaunchArgs', args);
        }
    },
    onHide() {
        // 应用进入后台时清理参数(可选)
        // plus.runtime.arguments = null;
    }
}
回到顶部