简约_FE
简约_FE
  • 发布:2023-04-03 14:57
  • 更新:2023-04-04 10:12
  • 阅读:458

【报Bug】plus.runtime.launcher 和 plus.runtime.arguments 首次从不同方式进入,后续切换不能拿到正确参数!!!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.7.9

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: Mi 10 Lite Zoom

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

复现示例:(pages/index/index.vue)

<template>  
    <view>  
        <view>  
            <button style="margin: 10rpx 0;" @click="addShortcut('快捷方式1','data111')">生成 快捷方式1, 参数:data111</button>  
            <button @click="addShortcut('快捷方式2','data2')">生成 快捷方式2, 参数:data2</button>  
            <button @click="addShortcut('快捷方式3','data3')">生成 快捷方式3, 参数:data3</button>  
        </view>  
        <view style="margin: 10rpx 0;">运行日志:</view>  
        <view class="show-log">  
            <view v-for="(item,index) in logList" :key="index">  
                <view>--------------</view>  
                <view>{{index+1}}:{{item}}</view>  
            </view>  
        </view>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                logList: []  
            }  
        },  
        onShow() {  
            this.log('运行方式:',plus.runtime.launcher, '参数:',plus.runtime.arguments)  
            if (plus.navigator.launcher == 'shortcut') {  
                uni.showToast({  
                    title: "从快捷方式运行,参数:"+plus.runtime.arguments  
                })  
            }  
        },  
        methods: {  
            log(...arg) {  
                this.logList.push(arg.join(','))  
                console.log(...arg)  
            },  
            addShortcut(name,param) {  
                var that = this;  
                plus.navigator.createShortcut({  
                    name: name,    
                    extra:{  
                        param: param,  
                    },  
                    force: true,  
                }, function(e){    
                    console.log("A=",e); // {"sure":false}    
                    if (e.sure == false) {  
                        uni.showModal({  
                            content: "请在权限设置中,启用添加 “快捷方式” 相关权限,否则无法创建快捷图标",  
                            success(res) {  
                            }  
                        })  
                    }  
                }, function(e){    
                    console.log("B=",e);    
                    console.log("C=",e.message);    
                });  
            },  
        }  
    }  
</script>  
<style>  
</style>

操作步骤:

重现步骤:

安装主app到手机,然后运行app内的按钮依次创建3个快捷方式。(创建快捷方式前,在权限管理中先给主App允许 添加快捷方式 权限)

主应用及快捷方式

不能正常拿到参数的情况:

首次从快捷方式运行,首次拿到的launcher为shortcut,然后从桌面切换到快捷方式2或主入口,此时打印的参数每次都是第一次打开的状态,即:launcher、arguments不能正确获取了。

错误参数的情况

预期结果:

期望的效果:

期望的效果是,首次从快捷方式进入和后续切换都能正确拿到launcher、arguments的对应参数。

正常情况参考:

期望的效果

(注:首次从主app进入后,再从快捷方式进入的结果,则都能正常拿到launcher、arguments参数)

实际结果:

实际情况:

实际情况

bug描述:

关于 plus.runtime.launcher 和 plus.runtime.arguments 首次从不同方式进入,后续不能拿到正确参数的bug。

重现步骤:

安装主app到手机,然后运行app内的按钮依次创建3个快捷方式。(创建快捷方式前,在权限管理中先给主App允许 添加快捷方式 权限)

主应用及快捷方式

不能正常拿到参数的情况:

在app未运行的情况下,首次从快捷方式运行,首次拿到的launcher为shortcut,再切换到别的入口进入,打印的参数每次都是第一次打开的状态,即:launcher、arguments不能获取到后续的状态。

错误参数的情况

正常拿到参数的情况:

在app未运行的情况下,首次从主应用打开,首次拿到的launcher为default,再回到桌面依次打开快捷方式此时launcher返回shortcut,对应的arguments 也能拿到。

正常情况

2023-04-03 14:57 负责人:DCloud_Android_ST 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

收到 该问题非常依赖系统层通知 目前部分系统未按预期执行相关事件导致未更新状态 我们后期会尝试其他方案

  • 简约_FE (作者)

    目前版本可有正确获取 launcher、argument 状态的兼容方案吗?

    2023-04-04 10:07

  • 懒懒的

    请问现在有其他解决方案吗?

    2023-05-15 14:50

  • 格克

    现在解决了吗 目前还是不行

    2024-03-28 16:16

  • 小七ing

    什么时候解决呢?

    2024-07-24 09:52

简约_FE

简约_FE (作者)

目前版本可有正确获取 launcher、argument 状态的兼容方案吗?

要回复问题请先登录注册