uni-app 中如何打开外部应用,如:浏览器、淘宝、京东、微博等
cheme协议
scheme协议,如taobao://,
打开外部scheme的API是plus.runtime.openURL()
常用URLscheme
[ // 只在 ios 中生效 { name: 'App Store', scheme: 'itms-apps://' }, { name: '支付宝', pname: 'com.eg.android.AlipayGphone', scheme: 'alipay://' }, { name: '淘宝', pname: 'com.taobao.taobao', scheme: 'taobao://' }, { name: 'QQ', pname: 'com.tencent.mobileqq', scheme: 'mqq://' }, { name: '微信', pname: 'com.tencent.mm', scheme: 'weixin://' }, { name: '京东', pname: 'com.jingdong.app.mall', scheme: 'openApp.jdMobile://' }, { name: '新浪微博', pname: 'com.sina.weibo', scheme: 'sinaweibo://' }, { name: '优酷', pname: 'com.youku.phone', scheme: 'youku://' } ]
uni-app拉起微博APP
启动微博并打开搜索页面搜索uni-app
scheme协议
// 如果手机安装了微博,那么可以直接拉起微博,跳转到指定页面,如果没有安装微博,那点击没有反应。
let openUrl=`sinaweibo://searchall?q=uni-app` plus.runtime.openURL(encodeURI(openUrl), function (res) { // 打开指定URL地址失败时回调,并返回失败信息。 });
http/https地址
let openUrl='https://s.weibo.com/weibo?q=uni-app' //先拉起浏览器,如果安装微博,就再拉起微博指定页面,如果没有微博,就停留在当前h5页面 plus.runtime.openURL(encodeURI(openUrl), function (res) { // 打开指定URL地址失败时回调,并返回失败信息。 });
注意:
ios中地址要求规范,需要转码使用encodeURI()处理一下地址。
否则提示
{ “code”: -1, “message”: “无效的参数” }
openJDApp(appurl) { if (plus.runtime.isApplicationExist({ pname: 'com.jingdong.app.mall', action: 'openApp.jdMobile://' })) { if (plus.os.name == 'Android') { plus.runtime.openURL(appurl, error => { console.log('Open system default browser failed: ' + error); }, 'com.jingdong.app.mall'); } else if (plus.os.name == 'iOS') { plus.runtime.openURL(appurl); } }else { location.href = appurl; //TODO } },