SimpleJalon
SimpleJalon
  • 发布:2019-07-04 14:43
  • 更新:2024-09-03 17:40
  • 阅读:6414

UNIAPP-3DTOUCH iOS平台支持3D Touch快捷菜单项

分类:uni-app

官方有个文章介绍,说的比较简单 对于新手来说 有些困难,而且还不是UNIAPP的教程,现在分享下 UNIAPP下使用3Dtouch

首先可以参考下官方的教程:http://ask.dcloud.net.cn/article/424?tdsourcetag=s_pctim_aiomsg

1.配置3Dtouch

打开你的UNIAPP项目,根目录下有一个 manifest.json 找到 如下节点

app-plus --> distribute ---> ios 然后在 ios 节点下插入如下代码: (具体插入什么 根据自己业务逻辑来,)

 "shortcuts": [    
        {    
            "type": "share",    
            "title": "分 享",    
            "subtitle": "分享到微信、微博、QQ",    
            "icontype": "UIApplicationShortcutIconTypeShare"    
        },    
        {    
            "type": "about",    
            "title": "关 于",    
            "subtitle": "www.dcloud.io",    
            "iconfile": "sa.png",    
            "userinfo": {    
                "key3":"value3"    
            }    
        }    
    ]

2.处理3Dtouch 菜单点击

首先打开uniapp 根目录的 APP.VUEonLaunch生命周期中插入如下代码

this.checkArguments(); // 检测启动参数 // 这是默认的监听参数 也就是应用初始化的时候监听  

// 监听后台恢复 这是利用5+的方式 处理 APP进入后台后 再进入到APP前台时参数监听  
plus.globalEvent.addEventListener('newintent', (e)=>{  
            this.checkArguments(); // 检测启动参数  
});

3. 然后在 app.vue 新增处理启动参数的代码 : checkArguments

打开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;  
                    // 可以自行根据type 处理 你的业务逻辑  

                    setTimeout(r => {  
                        switch (type) {  
                            case 'scan':  
                                uni.scanCode({  
                                    scanType: 'qrCode'  
                                });  
                                break;  
                            case 'search':  
                                uni.navigateTo({  
                                    url: '/pages/search/index'  
                                });  
                                break;  
                            case 'shouyi':  
                                // 我的收益  
                                break;  
                            case 'agent':  
                                // 邀请好友  
                                break;    
                        }  
                    }, 800);  

                    console.log(JSON.stringify(cmd));  
                } catch (e) {  
                    console.log('Shortcut-exception: ' + e);  
                }  
            }  
        },  
3 关注 分享
DCloud_heavensoft 紫川丶 banro

要回复文章请先登录注册

b***@sinobasedm.com

b***@sinobasedm.com

不需要清空吗,下次进来这个参数还一直保留呢,
2024-09-03 17:40
信赖的阿涛

信赖的阿涛

按照方法,通过快捷菜单进来plus.runtime.launcher值是default,参数都是空,怎么解决
2024-06-05 13:52
信赖的阿涛

信赖的阿涛

回复 l***@163.com :
你好,我也是这个情况,后来是怎么解决的?
2024-06-05 09:35
爱吃橘子的人

爱吃橘子的人

回复 l***@163.com :
我也遇到同样的问题,请问解决了吗
2022-03-01 14:48
三丰

三丰

6plus 为什么照着配置后,长按桌面图票后,没有自定义的文字出现,只有默认的 编辑主屏幕 与 移除APP 两个栏目呢?还有哪里需要配置吗
2021-10-28 22:04
l***@163.com

l***@163.com

回复 SimpleJalon :
大佬有空帮忙看下,谢谢
2020-05-22 17:50
l***@163.com

l***@163.com

手机型号:iPhone X ;

console.log('Shortcut-plus.runtime.launcher: ' + plus.runtime.launcher);
if (plus.runtime.launcher == 'shortcut') { ....

这两行代码:其中 plus.runtime.launcher 得到的值是default,而不是 shortcut;

而且 console.log('Shortcut-plus.runtime.arguments: ' + plus.runtime.arguments); 得到的是 {"name":"","path":"","query":"","id":0}
2020-05-22 14:40
SimpleJalon

SimpleJalon (作者)

回复 l***@163.com :
应该描述详细点
2020-05-22 14:30
l***@163.com

l***@163.com

配置跟你一样的,但是 plus.runtime.launcher 的值为default
2020-05-22 14:21
萌折

萌折

先标注一下,以后用得着
2020-03-01 11:01