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

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

要回复文章请先登录注册

7***@qq.com

7***@qq.com

回复 SimpleJalon :
谢谢大佬已经解决了,大佬方便留一个qq或者微信吗,有个3dtouch分享问题想咨询一下
2019-10-06 09:57
SimpleJalon

SimpleJalon (作者)

回复 7***@qq.com :
放在`methods` 里
```javascript

checkArguments() {
var launcher = plus.runtime.launcher;
console.log('Shortcut-plus.runtime.launcher: ' + launcher);
if (launcher == 'shortcut') {
// 想干啥你决定
}
},


```
2019-10-05 19:52
7***@qq.com

7***@qq.com

checkArguments() { 求大佬帮助这一段要怎么添加
2019-10-05 15:56
7***@qq.com

7***@qq.com

大佬有demo演示源码可供学习吗?
2019-10-05 13:36
cydida

cydida

good
2019-07-10 16:14
SimpleJalon

SimpleJalon (作者)

回复 今天回复我了吗 :
不需要 监听后台恢复的时候 获取的就是最新的
2019-07-10 15:42
今天回复我了吗

今天回复我了吗

谢谢大佬.不过plus.runtime.arguments 不需要清空吗
2019-07-10 15:36
hhyang

hhyang

支持大佬
2019-07-04 14:44