y***@163.com
y***@163.com
  • 发布:2024-03-25 10:25
  • 更新:2024-03-25 13:17
  • 阅读:210

【报Bug】(已解决) 安卓端 scheme跳转特定情况下无法获取plus.runtime.arguments

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: 华为p30 小米12s

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
goOpenURL(){  
    plus.runtime.openURL(`runtimearguments://data=${new Date().getTime()}`, function ( e ) {  
        console.log('跳转错误',JSON.stringify(e))  
    });  
 }
export default {  
        onShow: function() {  
            console.log('App Show')  
            let data = uni.getLaunchOptionsSync();  
            console.log('getLaunchOptionsSync-query',JSON.stringify(data.query))  
            console.log('getLaunchOptionsSync-referrerInfo',JSON.stringify(data.referrerInfo))  
            console.log('getLaunchOptionsSync-launcher',JSON.stringify(data.launcher))  
            setTimeout(() => {  
                console.log('启动参数', plus.runtime.arguments)  
            }, 200)  
        },  
        onHide: function() {  
            // #ifdef APP-PLUS  
            // 进行清除是因为从其他app跳过来之后,不清除的话 当app在后台自唤起的时候启动参数没有自动清空 还是原来的值  
            plus.runtime.arguments = '';  
            // #endif  
            console.log('App Hide')  
        }  
    }

操作步骤:

(错误情况)当B未启动时,A唤起B 并传参 正常唤起并成功获取参数 。操作后,B退到后台运行,A再次唤起B正常唤起但无法获取参数

预期结果:

正常唤起并成功获取参数

实际结果:

B正常唤起但无法获取参数

bug描述:

APP 相互跳转问题
A app启动 B app
1、(错误情况)当B未启动时,A唤起B 并传参 正常唤起并成功获取参数 。操作后,B退到后台运行,A再次唤起B正常唤起但无法获取参数
2、(正常情况)当B已经启动时(非A唤起启动,为自启动),A唤起B 正常唤起并成功获取参数,操作后,B退到后台运行,A再次唤起B正常唤起并成功获取参数
测试手机:华为 小米

2024-03-25 10:25 负责人:无 分享
已邀请:
y***@163.com

y***@163.com (作者)

已解决:
A 跳转 B

  1. 跳转APP:这里解决安卓端 B首次被唤起 操作后在后台 A再次唤起B参数为空的问题

    plus.runtime.openURL(`runtimearguments://data=${new Date().getTime()}`, function ( e ) {  
    console.log('跳转错误',JSON.stringify(e))  
    });

    2.B app 启动参数接收:
    2.1 这里增加一个延迟,很玄妙但是可以解决ios端 如果B已经是后台运行状态,A唤起B,在B中无法获取到参数的问题。
    2.2 这里启动参数获取到之后 把想要执行的函数执行了就要立即清除plus.runtime.arguments = '',是为了解决B首次被唤起 操作后在后台 A再次唤起B参数为空的问题

    onShow: function() {  
    console.log('App Show')  
    setTimeout(() => {  
       console.log('启动参数', plus.runtime.arguments)  
       plus.runtime.arguments = ''  
     },200)  
    },  

    题外话:
    之前一直是在onHide这里去清除plus.runtime.arguments 就不行 就是B首次被唤起 操作后在后台 A再次唤起B参数为空,所以我就把这个代码删了

    onHide: function() {  
    // #ifdef APP-PLUS  
    plus.runtime.arguments = '';  
    // #endif  
    console.log('App Hide')  
    }  
    

要回复问题请先登录注册