激情五月婷婷综合网_奇米精品一区二区三区四区_91在线码无精品_国产精品久久久久一区二区三区_日韩一区二区在线看_99国产欧美另类久久久精品_日韩电影免费一区_亚洲欧美在线另类_9色porny自拍视频一区二区_久久一区二区三区四区_日本在线不卡视频_欧美日韩三级一区二区_亚洲欧美日韩国产综合在线_国产精品影视网_欧美中文字幕一区_制服.丝袜.亚洲.中文.综合

0712-2888027 189-8648-0214
微信公眾號

孝感風信網絡科技有限公司微信公眾號

當前位置:主頁 > 技術支持 > HTML5/CSS3 > uni-app 中如何打開外部應用,如:瀏覽器、淘寶、AppStore、QQ等

uni-app 中如何打開外部應用,如:瀏覽器、淘寶、AppStore、QQ等

時間:2022-01-12來源:風信官網 點擊: 11030次

我們在開發 App 應用中,經常會遇到打開第三方程序的場景,比如打開手機淘寶、通過第三方瀏覽器打開一個 url 等等。

App不像網頁可以使用http超鏈接互相跳轉,但手機os設計了scheme機制,可以通過特殊的鏈接互相調起。

比如手機淘寶,其安裝后會在手機os中會注冊一個scheme協議,taobao://

這種協議還支持參數,比如taobao://s.taobao.com/search?q=uni-app啟動淘寶并打開搜索頁面搜索uni-app。

在uni-app/5+App中,可以通過scheme呼起其他App,也支持給自己的App設置scheme參數。

這個功能小程序并不支持,屬于App端的擴展API。

打開外部scheme的API是plus.runtime.openURL()。查看文檔:http://www.html5plus.org/doc/zh_cn/runtime.html

打開第三方程序

打開第三方程序,我們需要使用 runtime 模塊,下面我羅列兩個相關的方法。其他操作請詳讀文檔。

  1. 調用外部瀏覽器打開指定的URL

plus.runtime.openURL( url, errorCB, identity );  
  • url: ( String ) 必選 要打開的URL地址
    字符串類型,各平臺支持的地址類型存在差異,參考平臺URL支持表。
  • errorCB: ( OpenErrorCallback ) 可選 打開URL地址失敗的回調
    打開指定URL地址失敗時回調,并返回失敗信息。
  • identity: ( String ) 可選 指定打開URL地址的程序名稱
    在iOS平臺此參數被忽略,在Android平臺為程序包名,如果指定的包名不存在,則打開URL地址失敗。
    <template>  
        <view>  
            <button class="button" type="primary" @click="open(0)">使用第三方程序打開指定URL</button>  
        </view>  
    </template>  
plus.runtime.launchApplication( appInf, errorCB );  
  • appInf: ( ApplicationInf ) 必選 要啟動第三方程序的描述信息
  • errorCB: ( LaunchErrorCallback ) 必選 啟動第三方程序操作失敗的回調函數
    啟動第三方程序失敗時回調,并返回失敗信息。
    <template>  
        <view>  
            <button class="button" type="primary" @click="launchApp">打開淘寶</button>  
        </view>  
    </template>  
  1. 
    <script>  
    export default {  
        data() {  
            return {  
                url: 'https://uniapp.dcloud.io/'  
            };  
        },  
        onLoad(op) {},  
        methods: {  
            launchApp() {  
                let _this = this;  
                // 判斷平臺  
                if (plus.os.name == 'Android') {  
                    plus.runtime.launchApplication(  
                        {  
                            pname: 'com.taobao.taobao'  
                        },  
                        function(e) {  
                            console.log('Open system default browser failed: ' + e.message);  
                        }  
                    );  
                } else if (plus.os.name == 'iOS') {  
                    plus.runtime.launchApplication({ action: 'taobao://' }, function(e) {  
                        console.log('Open system default browser failed: ' + e.message);  
                    });  
                }  
    
            }  
        }  
    };  
    </script>  
    

常用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://'  
    }  
]  

更多實用例子

除了簡單的打開App,我們更多的時候想要直達。這里匯總了很多有用的直達案例:

  • 使用應用商店打開指定App,可用于引導評分
  • 強制使用應用寶打開指定App
  • 打開淘寶搜索頁面。需要你要做淘寶客,需要向淘寶申請自己的scheme參數并傳入。
  • 打開地圖并指定地點
  • 打開qq并到指定聊天界面,可用于客服
    具體代碼見下:
<template>  
    <view>  
        <page-head title="通過scheme打開三方app示例"></page-head>  
        <button class="button" @click="openBrowser('https://uniapp.dcloud.io/h5')">使用瀏覽器打開指定URL</button>  
        <button class="button" @click="openMarket()">使用應用商店打開指定App</button>  
        <button class="button" @click="openMarket('com.tencent.android.qqdownloader')">強制使用應用寶打開指定App</button>  
        <button class="button" @click="openTaobao('taobao://s.taobao.com/search?q=uni-app')">打開淘寶搜索頁面</button>  
        <button class="button" @click="openMap()">打開地圖并指定地點</button>  
        <view class="uni-divider">  
            <view class="uni-divider__content">打開QQ</view>  
            <view class="uni-divider__line"></view>  
        </view>  
        <view class="uni-padding-wrap">  
            <form @submit="openQQ">  
                <view>  
                    <view class="uni-title">請輸入聊天對象QQ號:</view>  
                    <view class="uni-list">  
                        <view class="uni-list-cell">  
                            <input class="uni-input" name="qqNum" type="number"/>  
                        </view>  
                    </view>  
                </view>  
                <view>  
                    <view class="uni-title">請選擇QQ號類型:</view>  
                    <radio-group class="uni-flex" name="qqNumType">  
                        <label>  
                            <radio value="wpa" checked=""/>普通QQ號</label>  
                        <label>  
                            <radio value="crm" />營銷QQ號(無需加好友直接聊天)</label>  
                    </radio-group>  
                </view>  
                <view class="uni-btn-v uni-common-mt">  
                    <button class="button" formType="submit">打開qq并到指定聊天界面</button>  
                </view>  
            </form>  
        </view>  
    </view>  
</template>  

<script>  
export default {  
    data() {  
        return {  

        };  
    },  
    methods: {  
        openBrowser(url){  
            plus.runtime.openURL(url)  
        },  
        openMarket(marketPackageName) {  
            var appurl;  
            if (plus.os.name=="Android") {  
                appurl = "market://details?id=io.dcloud.HelloH5"; //由于hello uni-app沒有上Android應用商店,所以此處打開了另一個示例應用  
            }  
            else{  
                appurl = "itms-apps://itunes.apple.com/cn/app/hello-uni-app/id1417078253?mt=8";  
            }  
            if (typeof(marketPackageName)=="undefined") {  
                plus.runtime.openURL(appurl, function(res) {  
                    console.log(res);  
                });  
            } else{//強制指定某個Android應用市場的包名,通過這個包名啟動指定app  
                if (plus.os.name=="Android") {  
                    plus.runtime.openURL(appurl, function(res) {  
                        plus.nativeUI.alert("本機沒有安裝應用寶");  
                    },marketPackageName);  
                } else{  
                    plus.nativeUI.alert("僅Android手機才支持應用寶");  
                }  
            }  
        },  
        openTaobao(url){  
            plus.runtime.openURL(url, function(res) {  
                uni.showModal({  
                    content:"本機未檢測到淘寶客戶端,是否打開瀏覽器訪問淘寶?",  
                    success:function(res){  
                        if (res.confirm) {  
                            plus.runtime.openURL("https://s.taobao.com/search?q=uni-app")  
                        }  
                    }  
                })  
            });  
        },  
        openMap(){  
            var url = "";  
            if (plus.os.name=="Android") {  
                var hasBaiduMap = plus.runtime.isApplicationExist({pname:'com.baidu.BaiduMap',action:'baidumap://'});  
                var hasAmap = plus.runtime.isApplicationExist({pname:'com.autonavi.minimap',action:'androidamap://'});  
                var urlBaiduMap = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";  
                var urlAmap = "androidamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0"  
                if (hasAmap && hasBaiduMap) {  
                    plus.nativeUI.actionSheet({title:"選擇地圖應用",cancel:"取消",buttons:[{title:"百度地圖"},{title:"高德地圖"}]}, function(e){  
                        switch (e.index){  
                            case 1:  
                                plus.runtime.openURL(urlBaiduMap);  
                                break;  
                            case 2:  
                                plus.runtime.openURL(urlAmap);  
                                break;  
                        }  
                    })  
                }  
                else if (hasAmap) {  
                    plus.runtime.openURL(urlAmap);  
                }  
                else if (hasBaiduMap) {  
                    plus.runtime.openURL(urlBaiduMap);  
                }  
                else{  
                    url = "geo:39.96310,116.340698?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82";  
                    plus.runtime.openURL(url); //如果是國外應用,應該優先使用這個,會啟動google地圖。這個接口不能統一坐標系,進入百度地圖時會有偏差  
                }  
            } else{  
                // iOS上獲取本機是否安裝了百度高德地圖,需要在manifest里配置,在manifest.json文件app-plus->distribute->apple->urlschemewhitelist節點下添加(如urlschemewhitelist:["iosamap","baidumap"])  
                plus.nativeUI.actionSheet({title:"選擇地圖應用",cancel:"取消",buttons:[{title:"Apple地圖"},{title:"百度地圖"},{title:"高德地圖"}]}, function(e){  
                    console.log("e.index: " + e.index);  
                    switch (e.index){  
                        case 1:  
                            url = "http://maps.apple.com/?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82&ll=39.96310,116.340698&spn=0.008766,0.019441";  
                            break;  
                        case 2:  
                            url = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";  
                            break;  
                        case 3:  
                            url = "iosamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0";  
                            break;  
                        default:  
                            break;  
                    }  
                    if (url!="") {  
                        plus.runtime.openURL( url, function( e ) {  
                            plus.nativeUI.alert("本機未安裝指定的地圖應用");  
                        });  
                    }  
                })  
            }  
        },  
        openQQ: function (e) {  
            // console.log("e.detail.value: " + JSON.stringify(e.detail.value));  
            // 沒有校驗qq號是否為空或合法數字,如果不是可用的qq號,啟動qq后會停留在qq主界面  
            plus.runtime.openURL('mqqwpa://im/chat?chat_type=' + e.detail.value.qqNumType + '&uin=' + e.detail.value.qqNum,function (res) {  
                plus.nativeUI.alert("本機沒有安裝QQ,無法啟動");  
            });  
        }  
    }  
};  
</script>  
<style>  
.button {  
    margin: 30upx;  
    color: #007AFF;  
}  
</style>  

給自己的App設置scheme

可在manifest中可配置。

  • <script>  
    export default {  
        data() {  
            return {  
                url: 'https://uniapp.dcloud.io/'  
            };  
        },  
        onLoad(op) {},  
        methods: {  
            open(types) {  
                    plus.runtime.openURL(this.url, function(res) {  
                        console.log(res);  
                    });  
            }  
        }  
    };  
    </script>  
    
  • 調用第三方程序

  • 欄目列表
    推薦內容
    熱點內容
    展開
    激情五月婷婷综合网_奇米精品一区二区三区四区_91在线码无精品_国产精品久久久久一区二区三区_日韩一区二区在线看_99国产欧美另类久久久精品_日韩电影免费一区_亚洲欧美在线另类_9色porny自拍视频一区二区_久久一区二区三区四区_日本在线不卡视频_欧美日韩三级一区二区_亚洲欧美日韩国产综合在线_国产精品影视网_欧美中文字幕一区_制服.丝袜.亚洲.中文.综合
    国产精品国产自产拍高清av| 久久精品亚洲一区二区三区浴池| 亚洲综合成人在线| 丝袜美腿亚洲一区二区图片| 高清beeg欧美| 91精品国产综合久久国产大片 | 欧美日韩一区中文字幕| 国产日韩v精品一区二区| 免费美女久久99| 欧美日韩中字一区| 自拍偷拍亚洲激情| 国产精品亚洲成人| 精品久久久久久最新网址| 久久久久国产精品免费免费搜索| 五月激情综合色| 日本精品裸体写真集在线观看| 日本一区二区三区dvd视频在线| 九九国产精品视频| 欧美一二三区精品| 欧美电影一区二区| 日韩一级大片在线观看| 亚洲成av人影院在线观看网| 在线观看日韩高清av| 99国产一区二区三精品乱码| 成人av网站在线| 日本一区二区成人在线| 国产乱国产乱300精品| 欧美变态tickling挠脚心| 日韩影视精彩在线| 欧美日韩精品欧美日韩精品 | 国产91丝袜在线播放| 337p粉嫩大胆色噜噜噜噜亚洲| 日本视频免费一区| 国产成人精品一区二区三区四区 | 亚洲成av人片观看| 色噜噜狠狠色综合中国| 亚洲视频 欧洲视频| 国产精品伦一区| 美女视频黄免费的久久| 欧美一区二区三区四区高清| 奇米精品一区二区三区在线观看一 | 亚洲成人手机在线| 欧美四级电影在线观看| 亚洲国产精品麻豆| 欧美人伦禁忌dvd放荡欲情| 日韩精彩视频在线观看| 91精品免费观看| 久久精品噜噜噜成人av农村| 麻豆中文一区二区| 夜夜亚洲天天久久| 欧美人狂配大交3d怪物一区| 蜜桃传媒麻豆第一区在线观看| 欧美一区二区三区公司| 免费观看久久久4p| 成人国产精品免费| 欧美久久一二三四区| 琪琪一区二区三区| 久久亚洲综合色| 国产成人精品亚洲777人妖| 国产精品女同一区二区三区| 99久久99久久久精品齐齐| 一区二区三区欧美在线观看| 欧美乱妇20p| 激情综合亚洲精品| 国产精品国产三级国产aⅴ无密码| 91麻豆国产福利精品| 午夜欧美视频在线观看| 精品少妇一区二区三区| 成人黄色一级视频| 久久久欧美精品sm网站| 国产91清纯白嫩初高中在线观看 | 久久精品国产77777蜜臀| 久久午夜羞羞影院免费观看| 成人av午夜电影| 91蜜桃免费观看视频| 亚洲欧洲精品天堂一级| 欧美日韩一区二区三区不卡| 美女视频黄免费的久久| 国产精品久久久久久久久免费樱桃 | 亚洲视频香蕉人妖| 欧美日韩在线三级| 韩国三级中文字幕hd久久精品| 国产精品传媒在线| 欧美精品日韩一本| 亚洲福利电影网| 精品国产乱码久久久久久闺蜜 | 欧美v亚洲v综合ⅴ国产v| 国产成+人+日韩+欧美+亚洲| 一区二区三区在线免费观看| 一级中文字幕一区二区| 91精品国产综合久久久蜜臀粉嫩| 国产精品一二三区在线| 夜夜嗨av一区二区三区网页| 精品国产麻豆免费人成网站| 日本韩国一区二区| 韩国视频一区二区| 亚洲国产中文字幕| 欧美—级在线免费片| 欧美精品免费视频| 91污片在线观看| 极品少妇一区二区三区精品视频| 亚洲男人的天堂在线aⅴ视频| 欧美成人video| 在线国产电影不卡| 国产激情视频一区二区三区欧美| 日本在线播放一区二区三区| 欧洲亚洲国产日韩| 国产精品99久久久久久似苏梦涵| 亚洲一二三四在线观看| 国产欧美日韩在线看| 91精品在线观看入口| 91小视频免费看| 欧美亚洲精品一区| 丁香天五香天堂综合| 日韩av高清在线观看| 亚洲品质自拍视频网站| 久久夜色精品国产噜噜av| 欧美另类videos死尸| 97精品电影院| 国产传媒久久文化传媒| 日韩精彩视频在线观看| 一区二区三区国产精品| 欧美激情一区二区三区在线| 91精品国产综合久久蜜臀| 91黄色激情网站| 成人av在线资源网站| 韩国一区二区三区| 男女性色大片免费观看一区二区| 一区二区三区免费观看| 欧美色爱综合网| gogo大胆日本视频一区| 久久成人免费日本黄色| 天堂va蜜桃一区二区三区漫画版| 亚洲欧美成aⅴ人在线观看| 国产视频在线观看一区二区三区| 国产一区二区三区精品视频| 久久天天做天天爱综合色| 91精品国产入口在线| 欧美网站一区二区| 一本久久综合亚洲鲁鲁五月天| 国产欧美一区二区精品忘忧草| 国产一区二区三区| 美女网站色91| 日本不卡一区二区| 亚洲bdsm女犯bdsm网站| 亚洲综合在线免费观看| 亚洲人精品午夜| 国产精品福利一区二区| 欧美激情综合五月色丁香| 国产视频一区二区在线| 久久亚洲影视婷婷| 久久久噜噜噜久久人人看 | 日本一区二区三区国色天香| 日韩欧美美女一区二区三区| 欧美精品日韩精品| 欧美精品三级日韩久久| 欧美久久久久久久久久| 欧美日韩精品欧美日韩精品一综合| 91国产视频在线观看| 国产精品免费视频网站| www国产亚洲精品久久麻豆| 精品日韩在线一区| 精品久久久久香蕉网| 欧美精品一区二区三| 26uuu亚洲婷婷狠狠天堂| 日韩精品一区二区三区swag| 欧美电影免费观看完整版| 日韩一区二区在线看片| 日韩亚洲欧美中文三级| 日韩精品一区二| 国产亚洲欧美日韩在线一区| 国产欧美一区二区精品婷婷| 国产精品久久久久一区二区三区共| 国产精品久久久久7777按摩 | 国产成人夜色高潮福利影视| 国产精品一区二区久久精品爱涩| 97se狠狠狠综合亚洲狠狠| 亚洲欧美日韩国产一区二区三区| 一区精品在线播放| 亚洲欧美视频一区| 亚洲伊人伊色伊影伊综合网| 亚洲图片欧美视频| 日日摸夜夜添夜夜添精品视频| 日韩免费观看高清完整版在线观看| 成人免费毛片app| 91影院在线免费观看| 欧美在线不卡一区| 制服丝袜中文字幕一区| 日韩免费视频一区二区| 国产午夜三级一区二区三| 国产精品久久久久精k8| 亚洲一区精品在线| 欧美aⅴ一区二区三区视频| 国产精一区二区三区| zzijzzij亚洲日本少妇熟睡| 在线免费精品视频| 欧美一区二区播放| 国产亚洲人成网站| 亚洲私人黄色宅男| 亚洲成人激情综合网|